猿问

检查Bash shell脚本中是否存在输入参数

我需要检查输入参数是否存在。我有以下脚本


if [ "$1" -gt "-1" ]

  then echo hi

fi

我明白了


[: : integer expression expected

如何首先检查输入参数1以查看它是否存在?


慕斯709654
浏览 3557回答 3
3回答

慕村9548890

它是:if [ $# -eq 0 ]  then    echo "No arguments supplied"fi该$#变量将告诉您脚本传递的输入参数的数量。或者您可以检查参数是否为空字符串或不是:if [ -z "$1" ]  then    echo "No argument supplied"fi该-z开关是检验的“$ 1”的扩张是一个空字符串或没有。如果它是一个空字符串,则执行正文。

墨色风雨

最好以这种方式进行演示if [[ $# -eq 0 ]] ; then    echo 'some message'    exit 1fi如果参数太少,通常需要退出。

森栏

在某些情况下,您需要检查用户是否将参数传递给脚本,如果没有,则返回默认值。如下面的脚本:scale=${2:-1}emulator @$1 -scale $scale这里如果用户没有scale作为第二个参数传递,我-scale 1默认启动Android模拟器。${varname:-word}是一家扩张运营商。还有其他扩展运营商:${varname:=word}其中设置所述未定义varname的而不是返回word值;${varname:?message}varname如果它被定义并且不为null则返回,或者打印message并中止脚本(如第一个例子);${varname:+word}返回word如果只varname被定义并且不为空; 否则返回null。
随时随地看视频慕课网APP
我要回答