-1

我是 linux 新手,试图了解在什么情况下我们将 $ 放在 shell 中的变量之前,以及什么时候不。

myVar=5
echo $myVar            # use $
myVar=$((myVar+1))     # why not myVar = ($myVar+1)
export myVar           # don't use $ ?
unset myVar            # don't use $ ?

好像有点违和 你知道一些一般规则,我们把 $ 放在变量之前,什么时候不?

4

2 回答 2

1

原则:

  • varName如果您想要变量本身,请使用( export, unset)

    • 特殊情况:算术扩展((expr))$((expr))接受包含数值的变量
  • $varName如果您想要变量保存的内容,请使用( if, for, case $var in)

于 2018-12-26T09:28:13.670 回答
0

$用于使用其值扩展变量,在算术表达式中$是隐含的,因为单词将被强制转换为整数值。

myVar=$((myVar+1))
# could also be written
myVar=$(($myVar+1))
# or
((myVar=$myVar+1))
((myVar=myVar+1))
((myVar+=1))
((++myVar))
# because variable assignment can be done in an arithmetic expression

export并且unset是内置函数,但是由于在调用之前执行扩展,因此不能像这样调用它们,unset $myVar因为 myVar 将更改为其值。

了解更多 Bash 手册,特别是基本功能shell 扩展shell 参数扩展

于 2018-12-26T10:23:19.067 回答