在 bash 中传递参数



我在以下脚本中找到语法错误时遇到麻烦。

砰test.sh砰砰

��
#!/bin/bash
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi

如果你不给出参数,$1将评估到一个空白,你可能会看到line 2: [: =: unary operator expected。 要解决此问题,请在$1两边添加引号:

#!/bin/bash
if [ "$1" = "cat" ]; then
echo "valid"
else
echo "invalid"
fi

这样,如果您不使用参数调用,它仍将与空字符串进行比较。

通常,您应该始终在变量扩展两边加上引号,否则如果变量为空(如您刚刚看到的)或变量中有空格,您可能会看到意外错误。

arg $1 没有值。 你可以做这样的事情。

if [ -z $1 ]
then
echo "you forgot to give me an arg."
exit 1
fi
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi

你也可以做:

if [ $# -ne 1 ]; then
   echo "Usage: ./script.sh <arg1>"
   exit 1
fi

相关内容

  • 没有找到相关文章

最新更新