ibe*_*exe 1 bash shell if-statement
我正在尝试编写一个脚本,将三个指定的参数一起添加,如果没有参数输出:"无参数".
麻烦的是,即使有三个参数,也总是输出"无参数".
我是shell脚本的新手.
这是我的脚本:
#!/bin/sh
if [[("$#"==0)]]; then
echo "No arguments specified"
exit 1
fi
sum=0
sum=$(expr $1 + $2 + $3)
echo "$sum"
exit 0
Run Code Online (Sandbox Code Playgroud)
要么改变你的shebang #!/bin/bash和使用
if (( $# == 0 )); then
Run Code Online (Sandbox Code Playgroud)
或使用POSIX兼容[:
if [ $# -eq 0 ]; then
Run Code Online (Sandbox Code Playgroud)
不要忘了,[并[[有两个命令,没有语法,所以与任何其他命令,你需要传递给用空格命令的参数分开.
如果你正在使用bash功能,比如[[,你应该总是使用#!/bin/bashshebang,否则你会遇到问题.
正如下面的评论中指出的另一个答案,检查你已经传递了三个参数可能是一个更好的主意:
#!/bin/bash
if (( $# < 3 )); then
echo "Insufficient number of arguments specified"
exit 1
fi
sum=$(( $1 + $2 + $3 ))
echo "$sum"
Run Code Online (Sandbox Code Playgroud)
我对您的脚本进行了其他一些更改,例如不初始化sum为0并使用更现代的方法$(( ))来评估变量的总和.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |