在 bash 中,我的代码中有重叠的引号,不允许再次将整个引号括起来

时间:2021-08-01 20:57:24

标签: bash

我正在编写一个小的 bash 脚本,我需要将这部分放在引号中,但我不能这样做,因为它总是有引号之外的部分。

printf '%s\n' {a..z} | awk '{print NR}' |
xargs -I num -n 1 bash -c "printf '%s\n' {a..z} | awk 'NR==num'"

有什么办法可以去掉里面的撇号或把整个块变成引号?

(对不起,我的英语不好,如果我只是愚蠢,那是因为这将是我有史以来第一个完整的编码项目)

1 个答案:

答案 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)。通常,您可以改进您的脚本,以便不再需要深度嵌套的引号。