我正在尝试学习shell脚本,我对以下的想法感到困惑:=或默认值
#!/bin/sh
echo "Please enter a number \c"
read input
input=$((input % 2))
if [ $input -eq 0 ]
then
echo "The number is even"
else
echo "The number is odd"
fi
echo "Beginning of second part"
a="BLA"
a="Dennis"
echo $a
unset a
echo "a after unsetting"
echo $a
${a:=HI}
echo "unsetting a again"
unset a
echo $a
Run Code Online (Sandbox Code Playgroud)
我明白了
Dennis
a after unsetting
./ifstatement.sh: line 21: HI: command not found
unsetting a again
Run Code Online (Sandbox Code Playgroud)
当你写作
${a:=HI}
Run Code Online (Sandbox Code Playgroud)
shell将扩展的结果拆分为单词,并将第一个单词解释为命令,就像对任何命令行一样.
相反,写
: "${a:=HI}"
Run Code Online (Sandbox Code Playgroud)
:是一个无操作命令.引号阻止shell尝试进行globbing,这在极少数情况下可能导致减速或错误.