Linux脚本中的两个$有什么区别

时间:2018-10-15 12:21:35

标签: linux shell

变量$processid ($)Date=$(date +'%m-%d-%y')($)有什么区别。 这里我们使用两种$符号,请让我知道这两个$有什么区别。

2 个答案:

答案 0 :(得分:0)

来自bash manual

  

3.5.3 Shell参数扩展
  “ $”字符介绍参数扩展,命令替换或算术扩展。可以将要扩展的参数名称或符号括在括号中,该括号是可选的,但用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。
  ...
  参数扩展的基本形式是$ {parameter}。参数的值被替换。

请注意,括号{}是可选的...

  

...
  3.5.4命令替换
  命令替换允许命令的输出替换命令本身。当命令如下时,将发生命令替换:
  $(命令)
  ....
    Bash通过在子shell环境中执行命令并将命令替换替换为命令的标准输出来执行扩展,并删除所有尾随的换行符。

所以,如果:

a=1

然后将$a${a}扩展到1

以下内容:

a=$(echo 2)

在子外壳程序中使用单个参数echo执行命令2并获取其标准输出(echo 2将在标准输出上用换行符写2)。因此它扩展为:

a=2$'\n'

但是尾随的换行符已删除,所以:

a=2

所以${there:1:2} ${are:-} ${many//.*/ways} ${to##use} ${the,,} ${dollar^^$} $(( ${!sign} + ${#in} )) ${!Bash*}

答案 1 :(得分:0)

答案: 1.Date = $(date +'%m-%d-%y')->此$将执行命令(date +'%m-%d-%y')

2. $ processid->此$将扩展Processid变量。