Bash脚本中的嵌套双引号



当我编写bash脚本时,我发现下面的语句有效并按预期工作:

#!/bin/bash
fn="file name"
LF='
'
fnc="$LF$(cat "$fn")"
echo "$fnc"

但是在fnc="$LF$(cat "$fn")"中有一对无人值守的嵌套引号。这是一种特性还是运气?

这是所有POSIX shell都具有的特性,在标准中简要描述如下。

引号内的输入字符,也包括在$(和匹配的)之间,不受双引号[.]的影响

这意味着,在这个特殊的情况下,如果您在命令替换中取消引用"$fn",它将不顾一切地进行分词,并且cat将接收两个参数(filename)而不是一个参数(file name)。$(cat $fn)是否在双引号之间不影响$fn的展开。

相关内容

  • 没有找到相关文章

最新更新