[英]Unable to store multiple commands in a variable and execute in Bash script
我有一個 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>"
我相信會有更好的方法,但這對我來說似乎沒問題:
#!/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 並調用該函數。
警告:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.