gpt4 book ai didi

linux - 什么时候应该在 bash 中转义 @?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:54 24 4
gpt4 key购买 nike

在下面的示例中,我看不到转义 @ 有任何不同,我觉得这有点令人惊讶,因为它在 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 中,数组不由 @ 符号表示。因此,您不必在类似的上下文中反斜杠 at 符号。 @ 在其他情况下在 bash 中是特殊的,但是,如在 $@${array[@]} 中,所以如果你想按字面打印这样的字符串,你必须使用单引号(反斜杠 @ 没有帮助),或者你必须反斜杠 $:

echo "\$@"
echo "\${array[2]}"

关于linux - 什么时候应该在 bash 中转义 @?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com