我收到错误消息,因为找不到if[ 0 -lt 1]
命令。我刚刚开始编写shell脚本。我不知道我的代码有什么问题:
if[ $# -lt 1 ]
then
echo "Give a number as a parameter. Try again."
else
n=$1
sum= 0
sd=0
while[ $n -gt 0 ]
do
sd=`expr $n % 10`
sum=`expr $sum + $sd`
n=`expr $n / 10`
done
echo "Sum of digits for $1 is $sum"
答案 0 :(得分:2)
您需要if
和[
之间的空格。您在while
之后会遇到同样的问题。
[ ]
符号在shell中有点奇怪。它看起来像语言的一部分,但它实际上并不是。 if
和while
单词始终需要后跟空格,然后执行命令,并根据其退出代码是否为真或假零或非零。
因此,实际上有一个名为[
的命令,它评估在其命令行上给出的条件,并根据条件评估为true还是false以退出代码终止。您可以在大多数系统的/usr/bin
目录中看到可执行文件(尽管shell通常具有内置版本以提高效率)。它的作用与test
相同。
另请注意,if
需要在fi
子句后匹配else
。
答案 1 :(得分:1)
查看https://www.shellcheck.net/(开源 - 免费)
它允许您在运行shell脚本之前检查它们。您只需将shell脚本复制到浏览器中并进行语法检查,您也可以在本地运行。
为什么呢?
嗯,我认为这将真正帮助你了解你做错了什么。
killall