冒号命令是空命令.
:构造在变量的条件设置中也很有用.例如,
: ${var:=value}
Run Code Online (Sandbox Code Playgroud)
如果没有:,shell会尝试将$ var作为命令进行评估.<= ???
我不太明白上述陈述中的最后一句话.谁能给我一些细节?
谢谢
尝试
var=badcommand
$var
Run Code Online (Sandbox Code Playgroud)
你会得到
bash: badcommand: command not found
Run Code Online (Sandbox Code Playgroud)
尝试
var=
${var:=badcommand}
Run Code Online (Sandbox Code Playgroud)
你会得到同样的.
shell(例如bash)总是尝试在每个命令行上运行第一个单词作为命令,即使在进行变量扩展之后也是如此.
唯一的例外是
var=value
Run Code Online (Sandbox Code Playgroud)
外壳特别对待.
您提供的示例中的技巧是${var:=value}在命令行的任何位置工作,例如
# set newvar to somevalue if it isn't already set
echo ${newvar:=somevalue}
# show that newvar has been set by the above command
echo $newvar
Run Code Online (Sandbox Code Playgroud)
但我们甚至不想回应价值,所以我们想要的东西比
echo ${newvar:=somevalue}.
该:命令允许我们在没有任何其他操作的情况下执行分配
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |