bash:不能简单'如果'工作

时间:2011-05-01 00:14:27

标签: bash

我不明白为什么这个简单的阅读不起作用。请注意,我对bash非常新。 :)

#!/bin/bash

echo -n "Project Name: " 
read PROJECT_NAME

if [ -n "$PROJECT_NAME" ]; then
    echo "You must provide a project name."
    exit 2
fi

-- snip --

执行此操作时,它会询问项目名称。按Enter后,我得到“你必须提供一个项目名称。”然后脚本存在而不是继续。

我做错了什么?

由于 埃里克

2 个答案:

答案 0 :(得分:5)

您需要[ -z "$PROJECT_NAME" ],而不是-n

来自man test

   -n STRING
          the length of STRING is nonzero

...

   -z STRING
          the length of STRING is zero

答案 1 :(得分:0)

为避免与-n-z混淆,您只需使用case/esac来比较字符串

case "$PROJECT_NAME" in
"" ) echo "No";;
*) echo "Have";;
esac