我正在尝试以 50 为增量处理一些文件。它似乎有效,但我收到一条错误消息,指出找不到该命令。
文件 sleepTest.sh:
#!/bash/bin
id=100
for i in {1..5}; do
$((id+=50))
sh argTest.sh "$id"
sleep 2
done
文件 argTest.sh:
#/bash/bin
id=$1
echo "processing $id..."
输出是
sleepTest.sh: line 6: 150: command not found
processing 150
sleepTest.sh: line 6: 200: command not found
processing 200
sleepTest.sh: line 6: 250: command not found
processing 250
sleepTest.sh: line 6: 300: command not found
processing 300
sleepTest.sh: line 6: 350: command not found
processing 350
很明显,我递增 $id
的方式存在问题,但它仍在这样做。为什么?以及如何增加 $id
。我简单地尝试了 $id+=50
,但这根本不起作用。
最佳答案
省略 $
。
((id+=50))
((...))
执行算术运算。 $((...))
执行算术并将结果捕获为字符串。如果你执行 echo $((...))
就没问题,但如果你只写 $((...))
那么 shell 会处理那个数字作为要执行的命令的名称。
var=$((21 + 21)) # var=42
echo $((21 + 21)) # echo 42
$((21 + 21)) # execute the command `42`
关于linux - Bash 脚本递增变量,但抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382091/