期望整数表达式:Bash

Bha*_*ora 1 bash shell

我读了堆叠溢出,我们需要在这里引用并添加引号,但它没有帮助.

array_length=${fileNames[@]}

COUNTER=0

while [ "$COUNTER" -lt "$array_length" ]; do
Run Code Online (Sandbox Code Playgroud)

我仍然得到错误.请帮忙.对bash来说是全新的

sjs*_*sam 6

array_length=${fileNames[@]}
Run Code Online (Sandbox Code Playgroud)

本来应该

array_length=${#fileNames[@]}
Run Code Online (Sandbox Code Playgroud)

对于预期的行为,您的while循环应该是:

while [ "$COUNTER" -lt "$array_length" ]
do
.
#do something
.
((COUNTER++)) # Equivalent to COUNTER=COUNTER+1
done
Run Code Online (Sandbox Code Playgroud)

${fileNames[@]}扩展到整个数组,同时为它添加前缀,#为您提供元素数量.


旁注:

1.不要忘记COUNTER在循环时增加内部.
2.尝试避免大写变量,例如COUNTER它们通常为系统保留.