Почему эта команда ssh не работает в ksh? - PullRequest
0 голосов
/ 15 июня 2011

Я настраиваю скрипт KSH и пытаюсь подключиться к различным хостам по ssh и выполнить команду grep на vfstab, которая вернет определенную строку.Проблема в том, что я не могу заставить следующее работать ниже.Я пытаюсь получить строку, которую он возвращает, и добавить ее в файл назначения.Есть ли лучший способ сделать это, например, назначить оператор 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 ]

3 голосов
/ 15 июня 2011

Вы помещаете удаленную команду в двойные кавычки, поэтому в теле awk будут подставлены $ 3 и $ 7.awk, вероятно, видит '{print ,}'.Избегайте знаков доллара в теле awk.

ssh $user@$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print \$3, \$7}' " >> $DEST
                                                                 ^    ^
0 голосов
/ 15 июня 2011

Я попробовал ниже, и это сработало для меня (в 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`;
...