Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash shell脚本默认值_Bash_Unix_Shell - Fatal编程技术网

Bash 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

我正在尝试学习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
我明白了

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中设置默认值的目的是什么?一旦您取消设置变量并回显它,就会显示默认值。这是因为当您取消设置变量时,您正在删除该变量。但这不是设置默认值的目的吗?一旦您取消设置变量并回显它,就会显示默认值。这是因为当您取消设置时,您正在删除该变量。