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