在bash中传递参数

时间:2014-02-09 05:48:51

标签: bash arguments

我无法在以下脚本中找到语法错​​误。

bash test.sh cat

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

3 个答案:

答案 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