我的Bash脚本编写如下:
#!/bin/bash
PINGGOOGLE=echo "<H1>Ping Status</H1>";echo "<table border=\"1\">"; ping -c 3 -w 3 -q 192.168.16.129 | sed '/ping statistics/,$!d';echo "</table>"
echo '<html>' >> pinghost.txt
echo '<body>' >> pinghost.txt
ssh root@192.168.16.130 "${PINGGOOGLE}" >> pinghost.txt
echo '</body>' >> pinghost.txt
echo '</html>' >> pinghost.txt
但脚本显示错误。
如果我在CLI中执行输出工作正常。当我存储在变量中并通过SSH在远程计算机上使用它时会出现问题。
echo "<H1>Ping Status</H1>";echo "<table border=\"1\">"; ping -c 3 -w 3 -q 192.168.16.129 | sed '/ping statistics/,$!d';echo "</table>"
答案 0 :(得分:1)
我确信会有更好的方法,但这对我来说似乎没问题:
#!/bin/bash
PINGGOOGLE() { echo "<H1>Ping Status</H1>";echo "<table border=\"1\">"; ping -c 3 -w 3 -q 192.168.16.129 | sed '/ping statistics/,$!d';echo "</table>"; }
echo '<html>' >> pinghost.txt
echo '<body>' >> pinghost.txt
{ declare -f PINGGOOGLE; echo PINGGOOGLE; } | ssh root@192.168.16.130 >> pinghost.txt
echo '</body>' >> pinghost.txt
echo '</html>' >> pinghost.txt
简而言之,不要将命令放在变量中。引用和转义存在问题。将其存储在bash函数中。
然后将该函数的定义传递给remote并调用该函数。
注意事项: