在这个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!
为什么会出现错误消息?
答案 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 ]