我正在尝试使用bash脚本批量修改某些图像,并打印出进度。在我看来,bash正在将增量解释为一个命令,并给出以下错误:
augment_data.sh: line 20: 0: command not found
以下是代码:
for file in *.jpg
do
convert $file -rotate 90 rotated_"$file"
((counter++))
if $((counter % 10 == 0)); then
echo "Rotated $counter files out of $num_files"
fi
done
第20行是具有计数器递增操作的行。
如何解决这个问题,以免收到错误消息?
答案 0 :(得分:2)
在算术替换中,算术运算的结果在操作本身的位置被替换。
在这种情况下,$(( 1 == 0 ))
的算术结果为0
,$(( 1 == 1 ))
的结果为1
。
因此,如果您使用$(( ... ))
,则此0
或1
将替换为该位置,因此将作为命令运行。由于您没有名为0
或1
的命令(可能),因此其中任何一个都会导致command not found
错误。
如果使用(( ... ))
,则算术结果会直接设置返回值,但不会发生扩展。