0

在下面的示例中,我看不出转义@有什么不同,我觉得这有点令人惊讶,因为它在 Perl 中是必需的。

在哪些情况下应该@在 bash 中转义?

TYPE="snap"
zfsPath="tank/fs"

(
echo "tank/fs@snap1"
echo "tank/fs/fs2@snap2"
) | grep "$zfsPath\@${TYPE}"
4

1 回答 1

4

在 Perl 中,@必须转义以防止双引号中的数组插值:

print "somebody@example.com"; # This would interpolate the array `@example`

在 bash 中,数组不使用 @sigil 表示。因此,您不必在类似的上下文中反斜杠 at 符号。@但是,在 bash 中在其他上下文中是特殊的,例如在$@or中${array[@]},所以如果你想按字面意思打印这样的字符串,你必须使用单引号(反斜杠 @ 没有帮助),或者你必须反斜杠$

echo "\$@"
echo "\${array[2]}"
于 2013-05-27T08:03:38.677 回答