Jus*_*tin 4 linux bash awk hp-ux
我在实现我的脚本所需的awk语句时遇到问题:
rsh fooDNS '
...
BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '{print \$6}')
...
'
Run Code Online (Sandbox Code Playgroud)
这里的问题是上面的语句包含在由单引号括起来的rsh命令中.因此,bash无法解释{print $ 6}周围的单引号,这给我带来了很多问题.到目前为止,我还未能确定如何解决这个问题.
您不能嵌套单引号,但可以结束单引号字符串,包含转义的单引号,然后重新输入引号.试试这个:
rsh fooDNS '
...
BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '\''{print $6}'\'')
...
'
Run Code Online (Sandbox Code Playgroud)
尽管如此,这种引用疯狂的事情很快变得难看.如果可能的话,我建议使用scp/rcp/ftp将普通的bash脚本复制到远程,然后运行它.如果不这样做,我认为你可以使用这样的技巧,如果你不需要向脚本的stdin提供任何东西:
cat script_file | rsh fooDNS bash
Run Code Online (Sandbox Code Playgroud)
(当然,rsh fooDNS /bin/sh如果您的脚本是sh兼容的,并且远程端没有bash,则使用.)
作为另一种选择,如果你的代码片段很短,你可以在这里使用docs:
rsh fooDNS sh <<'EOF'
...
BROADCAST_IP_ADDRESS=$(/usr/sbin/ifconfig $IF_NAME | grep broadcast | awk '{print $6}')
...
EOF
Run Code Online (Sandbox Code Playgroud)