Bash Script多条件失败

时间:2011-12-27 20:38:23

标签: bash shell

在这个Bash Shell脚本中,我想检查字符串的长度是否为零。在这种情况下,脚本应该回显错误消息并退出。

dbname="ssss"
dbuser=""

if [ -z "$dbname"]
then
        echo "DB name is not specified!"
        exit
fi

if [ -z "$dbuser"]
then
        echo "DB user is not specified!"
        exit
fi

如果dbname为“”,则按预期工作。但如果它有一些价值,并且我期望在下一个条件时看到它退出,我收到此错误消息:

Script.sh: line 4: [: missing `]'
DB user is not specified!

为什么会出现错误消息?

2 个答案:

答案 0 :(得分:5)

[ -z "$dbuser"]

应该是

[ -z "$dbuser" ]
# note: ------^

答案 1 :(得分:1)

您在引号后缺少空格。

if [ -z "$dbuser"]

如果$dbuser为空,它看起来像bash,这是有效的,因为它有一个空格:

if [ -z ]

填充$dbuser后,]将附加到字符串,并认为]是字符串的一部分:

if [ -z theuser]

要解决此问题,只需在第二个双引号后添加一个空格:

if [ -z "$dbuser" ]

现在,它将被翻译为以下内容,一切都很好:

if [ -z theuser ]