我不明白为什么这个简单的阅读不起作用。请注意,我对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后,我得到“你必须提供一个项目名称。”然后脚本存在而不是继续。
我做错了什么?
由于 埃里克
答案 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