[[ ]]. Use a loop (or explicit
* instead of @).ext=png
allowedExt=(jpg bmp png)
[[ "$ext" = "${allowedExt[@]}" ]] && echo "Extension is valid"ext=png
allowedExt=(jpg bmp png)
for value in "${allowedExt[@]}"
do
[[ "$ext" = "$value" ]] && echo "Extension is valid"
doneArray expansions in [[ .. ]] will implicitly concatenate
into a single string, much like in assignments. The problematic code is
equivalent to [ "$ext" = "jpg bmp png" ].
Instead, use a for loop to iterate over values, and
apply your condition to each.
Alternatively, if you do want to concatenate all the values in the
array into a single string for your test, use "$*" or
"${array[*]}" to make this explicit.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.