Bash - 何时在变量前使用'$'?

thn*_*tls 5 bash

我是新手来编写脚本,因为我一直在网上搜索信息,我发现了许多看似矛盾的建议.我最困惑的是变量名前面的$.我的主要问题是,何时使用该语法并且不合适?谢谢!

fed*_*qui 7

基本上,它在引用变量时使用,但在定义时不使用.

定义变量时,不要使用它:

value=233
Run Code Online (Sandbox Code Playgroud)

调用变量时必须使用它们:

echo "$value"
Run Code Online (Sandbox Code Playgroud)

这个基本规则有一些例外.例如,在数学表达中,作为etarion评论.


还有一个问题:如果我声明一个数组my_array并使用计数器i迭代它,那么对它的调用必须是$ my_array [$ i]吗?

看例子:

$ myarray=("one" "two" "three")
$ echo ${myarray[1]}     #note that the first index is 0
two
Run Code Online (Sandbox Code Playgroud)

为了遍历它,这段代码使它成为:

for item in "${myarray[@]}"
do
  echo $item
done
Run Code Online (Sandbox Code Playgroud)

在我们的情况下:

$ for item in "${myarray[@]}"; do echo $item; done
one
two
three
Run Code Online (Sandbox Code Playgroud)

  • 这不完全正确.例如,在数学上下文中,在引用变量时不要使用它 - "x = 2; y = 1; 设z = ++ x*++ y; echo $ z` (2认同)