Unix 通过ssh执行FOR循环
我试图通过ssh在几个Solaris 10远程设备上执行此代码。我正在从本地文件ipa.txt读取一些连接信息:Unix 通过ssh执行FOR循环,unix,ksh,solaris-10,Unix,Ksh,Solaris 10,我试图通过ssh在几个Solaris 10远程设备上执行此代码。我正在从本地文件ipa.txt读取一些连接信息: #!/bin/ksh while read hostn sid; do v_sid=$sid; ssh utest@$hostn << EOF for D in $(df -k |grep ora | grep -i $v_sid | awk '{print $6}') do printf "$(df -h $D |tail -
#!/bin/ksh
while read hostn sid; do
v_sid=$sid;
ssh utest@$hostn << EOF
for D in $(df -k |grep ora | grep -i $v_sid | awk '{print $6}')
do
printf "$(df -h $D |tail -1|awk '{print "FS:", $6, " usage:", $5"%"}')\n"
done
EOF
done < ipa.txt
FOR循环有问题,但我不知道它在哪里
有什么建议吗
谢谢你你能试着把这个条件放进去吗
命令替换在
ssh
读取here文档之前展开。如果该管道为空,则远程shell将看到
for D in
do
这会导致你的错误。要将精确文本发送到远程shell,请转义可能触发本地扩展的任何美元符号,并使用printf
的格式说明符
ssh utest@$hostn << EOF
for D in \$(df -k |grep ora | grep -i \$v_sid | awk '{print \$6}')
do
printf '%s\n' "\$(df -h $D |tail -1|awk '{print "FS:", \$6, " usage:", \$5"%"}')"
done
EOF
ssh utest@$hostn您在命令替换中缺少结束符)
,您正在迭代其输出。@chepner抱歉,这是一个输入错误,但问题仍然存在:ksh[3]:第3行的语法错误:'hostn'意外
for D in
do
ssh utest@$hostn << EOF
for D in \$(df -k |grep ora | grep -i \$v_sid | awk '{print \$6}')
do
printf '%s\n' "\$(df -h $D |tail -1|awk '{print "FS:", \$6, " usage:", \$5"%"}')"
done
EOF