这是一个bash脚本。我在if语句行中得到错误
# 2. read a line of input from the keyboard
read answer
if [-z "$answer"]
then
$answer=$default
else
$default=$answer
fi
我不再做太多的打击,我看不到错误,我已经尝试了
if [-z "$answer"]; then
并且失败也有同样的错误。任何人都可以看到错误吗?
编辑更新 我改成了这个
read answer
if [ -z "$answer" ]
then
$answer=$defaultEntry
else
$defaultEntry=$answer
fi
发生同样的错误
答案 0 :(得分:3)
只需在括号和条件之间留出空格:
if [ -z "$answer" ]
答案 1 :(得分:0)
[
和-z
之间以及"
和]
之间应该有空格。
[
是test
计划的别名。
[
是一个程序,bash可以执行。
[-z
不是,因此是错误。
答案 2 :(得分:0)
您需要[
和]
周围的空格。 E.g:
if [ -z "$answer" ]
then
$answer=$default
else
$default=$answer
fi
原因是[
实际上是一个shell内置命令。
[me@home]$ type [
[ is a shell builtin
[me@home]$ which [
/usr/bin/[
如果省略[
之后的空格,则会将命令名称修改为不存在的内容。
[me@home]$ [ -z "something" ] # OK. calling command [ with some args
[me@home]$ [-z "something" ] # fail. calling command [-z with some args
-bash: [-z: command not found
[
命令还会检查最后一个参数是否为]
,因此如果你没有空格,那么它就会成为前一个参数的一部分而[
命令会抱怨:
[me@home]$ [ -z "something" ] # this runs fine becuase last arg is ]
[me@home]$ [ -z "something"] # will fail. last arg is "something"]
-bash: [: missing `]'
答案 3 :(得分:0)
正如其他人所指出的那样,[
和]
周围的空间非常重要。
此外,在分配变量时,不应使用$
。
试试这个:
read answer
if [ -z "$answer" ]
then
answer=$defaultEntry
else
defaultEntry=$answer
fi
答案 4 :(得分:0)
read answer
if [ -z "$answer" ] #Spaces!
then
answer=$default # Use "answer" and not "$answer"
else
default=$answer # Use "default" and not "$default"
fi
现在可以正常工作,但我没有$ default的值。我怀疑你已经在其他地方做过(以及设置提示)。