我什么时候需要使用$来引用Bash中的变量?

1 variables bash

例如,我的代码中有时会这样做

$var
Run Code Online (Sandbox Code Playgroud)

有时我只是这样做

var
Run Code Online (Sandbox Code Playgroud)

这是一个更具体的例子:

upstream() {
    push server_shared_shortname
    ssh $server_shared -t "cd  ~/public_html; git pull -q ~/root.git master"
}
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 5

$var用于变量扩展:当您希望Bash替换变量的时使用它.所以,例如,这个:

var=foo
echo "$var"
Run Code Online (Sandbox Code Playgroud)

将变量var设置为值foo,然后运行该命令echo foo.


编辑添加一些东西:

  • $还有其他一些相关的用途; 例如,$( ... )运行命令...,捕获其输出,并扩展到该输出(减去尾随换行符),并$(( ... ))计算算术表达式...并扩展其结果:

    cat $(echo foo)      # equivalent to:  cat foo
    cat $((2+3))         # equivalent to:  cat 5
    
    Run Code Online (Sandbox Code Playgroud)
  • 至于codeforester暗示之下,你实际上并不需要$扩大"算术表达式"(这里的一切都解释为数字),如变量被发现(( ... )),$(( ... )),let ...,数组索引,和右手边当变量被声明为整数变量时的变量赋值.

  • Bash参考手册,http://www.gnu.org/software/bash/manual/bashref.html,详细而且质量上乘.可能需要一些心理调整才能开始思考Bash的方式,但是值得恕我直言.

  • @brannonteer - 看看这篇文章,了解何时在shell中使用变量引用[何时在shell变量周围包装引号?](http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-一个壳变量) (2认同)
  • @ M.Becerra:不只是空格 - 而且你的例子似乎并不相关. (2认同)
  • “我什么时候需要使用引号”是一个不同的问题,而不是一个“更好”的问题。这里更相关的是“我什么时候应该在 $ 中使用大括号”,例如 `${var}` 与 `$var` (`${var:-"bar"}`) (2认同)