为什么这个ssh命令在ksh中不起作用?

时间:2011-06-15 15:20:51

标签: scripting ssh ksh

我正在调整一个KSH脚本,我正在尝试ssh到各种主机并在vfstab上执行一个返回某一行的grep命令。问题是,我无法通过以下方式获得以下工作。我正在尝试获取它返回的行并将其附加到目标文件。有没有更好的方法来执行此操作,请将grep语句分配给命令变量?该命令在脚本中工作正常,但嵌套的引用似乎有点错误。无论如何,这是一行:

ssh $user@$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print $3, $7}' " >> $DEST

这导致:

 awk: syntax error near line 1
 awk: illegal statement near line one

如果有更好/更正确的方法,请告诉我!

2 个答案:

答案 0 :(得分:3)

您将远程命令放在双引号中,因此awk正文中的$ 3和$ 7将被替换。 awk可能会看到'{print ,}'。逃离awk身体中的美元符号。

ssh $user@$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print \$3, \$7}' " >> $DEST
                                                                 ^    ^

答案 1 :(得分:0)

我在下面试过,它对我有用(在ksh中)不确定为什么它会在你的情况下出错

user="username";
host="somehost";
VFSTAB_LOC="result.out";
DEST="/home/username/aaa.out";
echo $DEST;
`ssh $user@$host "grep '/abc/dyf' $VFSTAB_LOC | awk '{print $3, $1}'" >> $DEST`;