我看到了一个表达式a=($(cat))
,我无法从它的工作机制角度理解。
从功能上讲,它从标准输入中获取输入并将其分配给变量a
(形成一个数组)。
我的理解是,当shell执行内部括号时,它会执行带有标准输入的cat
命令,当您在标准输入上键入几行并按CTRL+D
时,它会返回行到外括号,然后将行分配给数组a
。
我的问题是,当我删除$
并将其写为a=((cat))
时,此表达式会出错。
答案 0 :(得分:2)
这是因为$(..)
是一个命令替换语法来运行命令。示例中的cat
在此构造下的子shell中运行。没有它,命令cat
和(
按字面解释shell不喜欢
命令替换
命令替换允许输出命令来替换命令名称。有两种形式:
$(command)
(或)command
Bash通过执行命令并用命令的标准输出替换命令替换来执行扩展,删除任何尾随换行符。
bash
中的算术运算符为$((..))
, <>