Bash将增量操作解释为命令

时间:2017-12-08 14:35:11

标签: linux bash

我正在尝试使用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行是具有计数器递增操作的行。

如何解决这个问题,以免收到错误消息?

1 个答案:

答案 0 :(得分:2)

在算术替换中,算术运算的结果在操作本身的位置被替换。

在这种情况下,$(( 1 == 0 ))的算术结果为0$(( 1 == 1 ))的结果为1

因此,如果您使用$(( ... )),则此01将替换为该位置,因此将作为命令运行。由于您没有名为01的命令(可能),因此其中任何一个都会导致command not found错误。

如果使用(( ... )),则算术结果会直接设置返回值,但不会发生扩展。