我正在写一个脚本来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