我在以下脚本中找到语法错误时遇到麻烦。
砰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