我正在调整一个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
如果有更好/更正确的方法,请告诉我!
答案 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`;