Bash shell脚本默认值
我正在尝试学习shell脚本,我对:=或默认值的概念感到困惑Bash shell脚本默认值,bash,unix,shell,Bash,Unix,Shell,我正在尝试学习shell脚本,我对:=或默认值的概念感到困惑 #!/bin/sh echo "Please enter a number \c" read input input=$((input % 2)) if [ $input -eq 0
#!/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
我明白了
Dennis
a after unsetting
./ifstatement.sh: line 21: HI: command not found
unsetting a again
${a:=HI}
扩展为HI
,然后shell尝试将其作为命令运行。如果您只是试图设置一个未设置的变量的值,那么您可能需要执行类似于[-z“$b”]&&b=BYE
${a:=HI}
的操作,然后您的shell尝试将其作为命令运行。如果您只是试图设置一个未设置的变量的值,那么您可能需要执行类似于&b=BYE的操作,而不是调用unset$a
,您可以再次调用${a:=HI}
,而不是调用unset$a
,在编写时再次执行${a:=HI code>
${a:=HI}
shell将扩展结果拆分为单词,并将第一个单词解释为命令,就像对任何命令行一样
相反,写
: "${a:=HI}"
:
是一个无操作命令。引号阻止shell尝试执行全局绑定,这在极少数情况下可能会导致减速或错误。当您编写
${a:=HI}
shell将扩展结果拆分为单词,并将第一个单词解释为命令,就像对任何命令行一样
相反,写
: "${a:=HI}"
:
是一个无操作命令。引号阻止shell尝试执行全局绑定,在极少数情况下可能会导致减速或错误。没有一种方法可以设置变量在取消设置时总是“回退”到的值。当您使用unset
命令时,您正在删除变量(不仅仅是清除与其关联的值),因此它不能有任何值,默认值或其他值
相反,尝试两件事的结合。首先,确保变量已初始化。其次,创建一个函数,将变量设置为所需的默认值。调用此变量,而不是unset
。通过这种组合,您可以模拟一个具有“默认”值的变量。没有一种方法可以设置一个变量在取消设置时总是“回退”到的值。当您使用unset
命令时,您正在删除变量(不仅仅是清除与其关联的值),因此它不能有任何值,默认值或其他值
相反,尝试两件事的结合。首先,确保变量已初始化。其次,创建一个函数,将变量设置为所需的默认值。调用此变量,而不是unset
。通过这种组合,您可以模拟具有“默认”值的变量。此处显示的行数少于21行,并且显示的行不能给出此错误。请把整个剧本给我看。编辑历史记录中的此更改将清除所有内容:echo${a:=HI}您在此处显示的行少于21行,并且显示的行不能给出此错误。请把整个剧本给我看。编辑历史记录中的此更改将清除:echo${a:=HI}我实际上想在变量中设置一个默认值,这样,如果我取消设置,默认变量将显示upHmm,而不是:=does.:=如果未定义左侧,则仅扩展到右侧的值。这就像rubyi中的“#{a | | |'HI'}”
实际上想在变量中设置一个默认值,这样,如果我取消设置,默认变量将显示upHmm,这不是:=does:=如果未定义左侧,则仅扩展到右侧的值。在RubyAgent中设置默认值的目的是什么?一旦您取消设置变量并回显它,就会显示默认值。这是因为当您取消设置变量时,您正在删除该变量。但这不是设置默认值的目的吗?一旦您取消设置变量并回显它,就会显示默认值。这是因为当您取消设置时,您正在删除该变量。