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