我无法在以下脚本中找到语法错误。
bash test.sh cat
#!/bin/bash
if [ $1 = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
答案 0 :(得分:2)
如果您没有提供参数,$1
将评估为空格,您可能会看到line 2: [: =: unary operator expected
。要解决此问题,请在$1
附近添加引号:
#!/bin/bash
if [ "$1" = "cat" ]; then
echo "valid"
else
echo "invalid"
fi
这样,如果不使用参数调用,它仍将与空字符串进行比较。
通常,您应该始终在变量扩展周围加上引号,否则如果变量为空(如您刚才看到的那样)或者变量中有空格,您可能会看到意外错误。
答案 1 :(得分:0)
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
答案 2 :(得分:0)
你也可以这样做:
if [ $# -ne 1 ]; then
echo "Usage: ./script.sh <arg1>"
exit 1
fi