linux - Bash 脚本递增变量,但抛出错误

标签 linux bash shell

我正在尝试以 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/

相关文章:

linux 邮件添加内容类型 header 不起作用

linux - 如何走内核的VMA?

linux - 使用 vala 的示例 waf 项目

bash - 更改 Cronjob 路径

java 文件是从命令行执行的,而不是从浏览器(apache)执行的?

shell - gnuplot replot 不绘图

c - gcc 完整性检查包

linux - Antergos Linux 上的 "OPENSSL_1.0.0 not found"

linux - BASH - Sed 无法删除填充元字符的属性行

regex - Shell - 这个命令有什么作用?