我需要检查输入参数的存在。我有以下脚本
if [ "$1" -gt "-1" ]
then echo hi
fi
我明白了
[: : integer expression expected
如何首先检查输入参数1以查看它是否存在?
我需要检查输入参数的存在。我有以下脚本
if [ "$1" -gt "-1" ]
then echo hi
fi
我明白了
[: : integer expression expected
如何首先检查输入参数1以查看它是否存在?
当前回答
Try:
#!/bin/bash
if [ "$#" -eq "0" ]
then
echo "No arguments supplied"
else
echo "Hello world"
fi
其他回答
只是因为有更多的基点需要指出,所以我补充说,您可以简单地测试字符串是否为空:
if [ "$1" ]; then
echo yes
else
echo no
fi
同样,如果您期望arg计数,只需测试最后一个:
if [ "$3" ]; then
echo has args correct or not
else
echo fixme
fi
以此类推,使用任何arg或var
最好这样演示
if [[ $# -eq 0 ]] ; then
echo 'some message'
exit 1
fi
如果参数太少,通常需要退出。
作为一个小提示,Bash中的数字测试运算符只对整数(-eq、-lt、-ge等)有效
我希望通过以下方式确保我的$vars为int
var=$(( var + 0 ))
在我测试它们之前,只是为了防御“[:integer arg required”错误。
Try:
#!/bin/bash
if [ "$#" -eq "0" ]
then
echo "No arguments supplied"
else
echo "Hello world"
fi
在某些情况下,您需要检查用户是否向脚本传递了参数,如果没有,则返回默认值。如以下脚本所示:
scale=${2:-1}
emulator @$1 -scale $scale
在这里,如果用户没有通过scale作为第二个参数,我默认使用scale 1启动Android模拟器${varname:-word}是一个扩展运算符。还有其他扩展运营商:
${varname:=word},它设置未定义的varname而不是返回word值;${varname:?message},如果已定义且不为空,则返回varname,或者打印消息并中止脚本(如第一个示例);${varname:+word},仅当varname已定义且不为空时才返回word;否则返回null。