在下面的示例中,我看不出转义@
有什么不同,我觉得这有点令人惊讶,因为它在 Perl 中是必需的。
在哪些情况下应该@
在 bash 中转义?
TYPE="snap"
zfsPath="tank/fs"
(
echo "tank/fs@snap1"
echo "tank/fs/fs2@snap2"
) | grep "$zfsPath\@${TYPE}"
在 Perl 中,@
必须转义以防止双引号中的数组插值:
print "somebody@example.com"; # This would interpolate the array `@example`
在 bash 中,数组不使用 @sigil 表示。因此,您不必在类似的上下文中反斜杠 at 符号。@
但是,在 bash 中在其他上下文中是特殊的,例如在$@
or中${array[@]}
,所以如果你想按字面意思打印这样的字符串,你必须使用单引号(反斜杠 @ 没有帮助),或者你必须反斜杠$
:
echo "\$@"
echo "\${array[2]}"