1

У меня есть команда, которую я хочу запустить на машине B с машины A. Если я запускаю команду на машине B локально, она работает нормально.

Вот команда:

for n in `find /data1/ -name 'ini*.ext'` ; do  echo cp $n "`dirname $n `/` basename $n 
.ext`"; done

С машины А я выдаю эту команду

ssh user@machineB  for n in `find /data1/ -name 'ini*jsem'` ; do  echo cp $n "`dirname $n `/` basename $n .jsem`"; done

Но я получаю ошибку syntax error near unexpected token do

Что случилось? Я думаю, что это как-то связано с двойными кавычками, одинарными кавычками, точкой с запятой, потому что выполнение команды ssh user@machineB ls работает нормально. Так что не вопрос аутентификации или что-то еще.

Спасибо

1 ответ1

1

Проблема в том, что ваша локальная оболочка интерпретирует часть команды. Вам нужно заключить всю команду в кавычки, чтобы ее выполняла удаленная оболочка.

ssh user@machineB 'for n in `find /data1/ -name "ini*jsem"` ; do  echo cp $n "`dirname $n `/` basename $n .jsem`"; done'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .