gpt4 book ai didi

linux - 如何在单引号包围的 awk 语句中使用单引号?

转载 作者:IT王子 更新时间:2023-10-29 00:53:17 26 4
gpt4 key购买 nike

我在执行脚本所需的 awk 语句时遇到问题:

rsh fooDNS '
...

BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '{print \$6}')
...
'

这里的问题是上面的语句包含在一个用单引号括起来的 rsh 命令中。因此,bash 无法解释围绕 {print $6} 的单引号,这给我带来了很多问题。到目前为止,我还不能确定如何解决这个问题。

最佳答案

您不能嵌套单引号,但可以结束单引号字符串,包括一个转义的单引号,然后重新输入引号。试试这个:

rsh fooDNS '
...

BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '\''{print $6}'\'')
...
'

尽管如此,这种疯狂的引用很快就会变得丑陋。如果可能的话,我建议使用 scp/rcp/ftp 将普通的 bash 脚本复制到远程,然后运行它。如果做不到这一点,我认为如果您不需要向脚本的标准输入提供任何内容,您可以使用这样的技巧:

cat script_file | rsh fooDNS bash

(当然,如果您的脚本与 sh 兼容并且远程端没有 bash,则使用 rsh fooDNS/bin/sh。)

作为另一种选择,如果您的代码片段很短,您可以使用此处的文档:

rsh fooDNS sh <<'EOF'
...
BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '{print $6}')
...
EOF

关于linux - 如何在单引号包围的 awk 语句中使用单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404704/

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