我正在编写一个小的 bash 脚本,我需要将这部分放在引号中,但我不能这样做,因为它总是有引号之外的部分。
printf '%s\n' {a..z} | awk '{print NR}' |
xargs -I num -n 1 bash -c "printf '%s\n' {a..z} | awk 'NR==num'"
有什么办法可以去掉里面的撇号或把整个块变成引号?
(对不起,我的英语不好,如果我只是愚蠢,那是因为这将是我有史以来第一个完整的编码项目)
答案 0 :(得分:1)
在双引号内,您可以像这样转义其他双引号:
$ echo "a \"b\" c"
a "b" c
因此,你可以写
"printf '%s\n' {a..z} | awk '{print NR}' | xargs -I num -n 1 bash -c \"printf '%s\n' {a..z} | awk 'NR==num'\""
然而,这可能不是要走的路。问题是,为什么需要用引号引起来的这个命令?如果您需要深度嵌套的引号,则您的脚本很可能写得不好(例如,它可能依赖于 eval
)。通常,您可以改进您的脚本,以便不再需要深度嵌套的引号。