Bash脚本如果语句不起作用

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)

Tom*_*ech 6

要么改变你的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并使用更现代的方法$(( ))来评估变量的总和.