命令替换中的额外括号

命令替换中的额外括号

我确实注意到一些作者在命令替换周围添加了额外的括号。考虑以下片段:

$ var1=$(uname -r)
$ echo $var1
5.3.0-26-generic

如果我写:有什么区别吗?

$ var1=($(uname -r))
$ echo $var1
5.3.0-26-generic

为了给您提供更多背景信息,我已经看到了这一点这里 ,当他写道:

COMPREPLY=($(compgen -f -X "$xpat" -- "${word}"))

答案1

额外括号的意义在于它们初始化数组在巴什中。这在处理uname -r由单个单词组成的的输出时没有太大区别,但是对于COMPREPLY这一点很重要。

你可以自己看看:

var1=($(uname -a))
echo $var1
echo ${var1[@]}

相关内容