Simple problem but I don't know how to fix it. Here's the code:
missing_filters=('Sort key' 'Page' 'Pagesize' 'Sort direction')
for level in {0..$((${#missing_filters[@]}-1))}
do
echo "${#missing_filters[$level]}^|^${missing_filters[$level]}"
done | column -tes "^"
It should show every element of the array with 1-4 before it like this:
1 | Sort key
2 | Page
3 | Pagesize
4 | Sort direction
However, I get the error ./advancedplexapi.sh: line 4608: {0..3}: syntax error: operand expected (error token is "{0..3}")
. I find this strange as the error shows exactly how I want the shell to interpret it (that being {0..3}
). I did nothing wrong because otherwise the shell wouldn't give me the correct output in the error. Why doesn't it work? And ofcourse how can I fix this?
It is not working as expected, because brace expansion is done before variable substitution.
You could use
seq
or afor
-loop instead:or
For more details, see this answer to another question.
Also
"${#missing_filters[$level]}"
will not give1 2 3 4
, but expand to the number of characters in each value -->8 4 8 14
. Better use$((level+1))
.However, you could more easily loop the array keys: