【发布时间】:2012-02-16 15:10:43
【问题描述】:
【问题讨论】:
-
^上面可能重复的答案与此处发布的相似,包括关于使用 [[ -z ]] 测试的评论
标签: bash
【问题讨论】:
标签: bash
使用$#,它等于提供的参数数量,例如:
if [ "$#" -ne 1 ]
then
echo "Usage: ..."
exit 1
fi
注意事项:请注意,在函数内部,这将等于提供给函数而不是脚本的参数数量。
编辑:正如SiegeX in bash 所指出的,您还可以在(( ... )) 中使用算术表达式。可以这样使用:
if (( $# != 1 ))
then
echo "Usage: ..."
exit 1
fi
【讨论】:
bash的问题,我建议if (( $# != 1 ))
case 语句可能更惯用。不过,对于初学者来说,语法看起来很陌生。 case $# in [123]) ;; *) echo fail >&2; exit 1;; esac
[] 中的表达式使用<、>、!= 和== 进行字符串比较,使用-lt、-gt、-le、@987654@33 987654340@ 和 -eq 用于算术比较。 (()) 中的表达式使用 <、>、!= 和 == 进行算术比较。更多运营商见bash manpage。
接受的解决方案通过测试给定的参数计数来检查是否设置了参数。如果这不是所需的检查,也就是说,如果您想检查是否设置了特定参数,则可以执行以下操作:
for i in "$@" ; do
if [[ $i == "check parameter" ]] ; then
echo "Is set!"
break
fi
done
或者,更简洁:
for i in "$@" ; do [[ $i == "check argument" ]] && echo "Is set!" && break ; done
【讨论】:
./script check parameter 会成功(这是不正确的)。
for i do [ "$i" == ...可能只是为了迷惑人tldp
if (( "$#" != 1 ))
then
echo "Usage Info:…"
exit 1
fi
【讨论】:
==!=<><=>=,它还可以像你一样在单个(( ))中执行布尔逻辑可以在C中做