我收到以下算术值错误
#!/bin/bash
n=0
line_count=9
line_count=$(line_count)/3
echo $line_count
exit 0
预期结果是 3
[]$ ./test.sh
./test.sh: line 4: line_count: command not found
/3
[]$ more test.sh
答案1
来补充@Kusalananda的回答,除了标准sh
语法之外:
line_count=$((line_count / 3))
您bash
还可以使用继承自的这些语法ksh
(也可以在 中使用zsh
):
((行数 = 行数 / 3))
((行数 /= 3))
让 line_count/=3
排版-i行数;行数=行数/3
bash
( 和zsh
) 还支持:
行数=$[行数/3]
对于旧的 POSIX 之前的 Bourne/Almquist sh
:
line_count=`expr "$line_count" / 3`
答案2
bash
算术展开由和其他一些 shell完成$(( ... ))
,例如
line_count=$(( line_count/3 ))
使用line_count=$(line_count)/3
,您可以将命令的输出分配给后缀为 的line_count
变量。line_count
/3
这就是为什么您收到错误“line_count:找不到命令”然后输出/3
。
看看 ShellCheckhttps://www.shellcheck.net/
它能够检查您的脚本是否存在常见问题。在这种情况下,它不会帮助您发现$(...)
应该发现的情况,$((...))
但那是因为$(line_count)
这是完全合法的 shell 代码。它只是做了错误的事情。