2013-02-15 477 views
0

我想知道字符串变量是否为空。我通过将变量与字面空字符串("")进行比较来完成此操作。shell - 将字符串与变量(字符串或数字)进行比较

这里是我的代码:

var=$1 

if [$var == ""]; then 
    echo "\$var is $var" 
fi 

它给了我这个错误时$1""(无命令行参数(S)):

./script.sh: line 5: [: ==: unary operator expected 

$1有一个价值,它的工作原理精细。

我试过下面的东西,他们仍然给了我一个错误:

  1. 更改==-eq
  2. 周围$var""
  3. space放在""的内部使其成为" "
  4. 1-3

不同组合我希望能够给一个字符串变量(空或不)与""比较。

+0

您正在使用哪个外壳? – iamnotmaynard 2013-02-15 16:13:53

回答

2

因为它是一个命令名称,所以在前面的括号([)之后应该总是有一个空格。

的方式来最接近做你自己:if [ "$var" = "" ]; then...

另一种方式来做到这一点(-n断言其测试非空):if [ -n "$var" ]; then...

双引号$var是必需的。

+0

宾果!谢谢! – 2013-02-15 16:21:40

+0

为了保持与原始测试相同的意义,您希望使用'[-z“$ var”]'(-z:如果参数为零长度字符串,则为true) – William 2013-02-15 17:09:01

相关问题