变量$processid ($)
和Date=$(date +'%m-%d-%y')($)
有什么区别。
这里我们使用两种$
符号,请让我知道这两个$
有什么区别。
答案 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变量。