我正在尝试编写一个脚本,将三个指定的参数添加到一起,如果没有参数输出:“无参数”。
麻烦的是,即使有三个参数,也总是输出“无参数”。
我是shell脚本的新手。
这是我的剧本:
#!/bin/sh
if [[("$#"==0)]]; then
echo "No arguments specified"
exit 1
fi
sum=0
sum=$(expr $1 + $2 + $3)
echo "$sum"
exit 0
答案 0 :(得分:6)
将您的shebang更改为#!/bin/bash
并使用
if (( $# == 0 )); then
或使用与POSIX兼容的[
:
if [ $# -eq 0 ]; then
不要忘记[
和[[
都是命令,而不是语法,因此与任何其他命令一样,您需要将传递给命令的参数与空格分开。
如果您使用的是bash功能,例如[[
,则应始终使用#!/bin/bash
shebang,否则会遇到问题。
正如下面评论中另一个答案所指出的,检查你是否已经传递了三个参数可能是一个更好的主意:
#!/bin/bash
if (( $# < 3 )); then
echo "Insufficient number of arguments specified"
exit 1
fi
sum=$(( $1 + $2 + $3 ))
echo "$sum"
我对您的脚本进行了其他一些更改,例如不将sum
初始化为0并使用更现代的$(( ))
来评估变量的总和。
答案 1 :(得分:3)
我想你要求的是:
if [ $# -eq 0 ];