bash - 在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'"
有没有什么办法可以去掉里面的撇号或者把整个块变成引号?
(对不起我的英语不好,如果我只是对此感到愚蠢,那是因为这将是我第一个完整的编码项目)
解决方案
在双引号内,您可以像这样转义其他双引号:
$ 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
)。通常,您可以改进您的脚本,以便不再需要深度嵌套的引号。
推荐阅读
- msp430 - 读取在 msp430F169 微控制器上烧录的 hex 文件
- java - Java:迭代列表时出现 ConcurrentModificationException
- php - 拉拉维尔 5.5。联合多个数据库
- composer-php - 作曲家安装或更新抛出异常
- php - 使用 PHP shell_exec 在后台运行 python 脚本
- apache-spark - 使用 yarn-cluster 模式在 EMR 从 Spark 上运行 Phoenix 时出错
- javascript - javascript:隐式匹配两个javascript对象并创建一个对象
- stm32 - Telit GL865 GSM 模块的静态 IP 通过 LWiP PPPoS 使用 STM32F7
- corda - 如何获取特定节点参与者的“PartyAndCertificate”?
- java - java.lang.NullPointerException:当proguard启用时名称为空