我正在寫一個腳本來ssh進入機器列表並將一個變量與另一個值進行比較..我遇到了一個問題(我有幾個解決方法,但在這一點上我是隻是想知道爲什麼這種方法不起作用)。凌亂的bash變量
VAR=`ssh $i "awk -F: '/^bar/ {print \$2}' /local/foo.txt"`
($我會是一個主機名的主機是值得信賴的,沒有密碼提示中給出。)foo.txt的的
例子:
foo:123456:abcdef
bar:789012:ghijkl
baz:345678:mnopqr
我假定這是一個問題用引號,或者在某處需要。我試了幾種方法(不同的引用,使用$()而不是``等),但似乎無法做到。我的腳本正在使用以下工作正常:
VAR=`ssh $i "grep bar /local/foo.txt" | awk -F: '{print \$2}'`
就像我說的,只是一個好奇心,任何反應表示讚賞。
忘了發佈我的輸出結果:awk正在吐出整個匹配的行,而不是第二部分。用引號和\'有點玩,我似乎得到了關於「{打印」命令找不到等錯誤,就好像有一個新的行在那裏。
你可能會得到更多的ServerFault響應,關係到我的問題有:http://serverfault.com/ques tions/99886/ssh-not-redirecting -stdout-to-local-terminal – 2010-03-18 18:27:36
如果從第一個示例中刪除插入符號,會發生什麼情況?也許在這條線的開頭有一個看不見的角色。 – danben 2010-03-18 18:29:02
@Lance Roberts - 這個問題是關於awk,而不是ssh,因此適用於堆棧溢出。 – danben 2010-03-18 18:29:29