#!/bin/bash
echo "Number of hosts entered are "$#
echo "Hostnames are "$@
for i in "$@"
do
echo "Logging in to the host "$i
pbsh root@$i '
ipaddr=`ip r | awk '{print $9}'`
if [ ipaddr = 172.*.*.* ]
then
echo "Script can not be run in this IP series"
exit
else
cd /var/tmp ; wget http://**********
fi'
done
执行上述脚本后,它将引发下面的错误。脚本正在执行,但不是以所需的方式执行。
AWK:CMD。行:1:{打印
AWK:CMD。行:1:^意外的换行符或字符串结尾
我是脚本新手。如果剧本有什么问题,请纠正我。
最佳答案
在您发布的列表中,pbsh
行中的开头单引号被紧接着awk
命令的单引号关闭。你可以通过用反斜杠预先固定它来避免后者。
如果pbsh还接受从stdin执行的命令,另一种方法是使用HERE文档(请参阅bash手册页,HERE文档部分)。
更新:戈登·戴维森的评论是对的。\'
也不起作用。pbsh坚持让命令作为一个单独的参数执行,您可以像他建议的那样随意使用引号,或者将pbsh的整个输入放到一个单独的文件中并使用,即。,
pbsh root@$i $(<input_script.pbsh)
关于linux - 无法在shell脚本中使用awk命令进行打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43601682/