Что не так с этой командой unix, когда я пытаюсь через ssh? - PullRequest
0 голосов
/ 25 октября 2018

Когда я запускаю следующую команду:

ssh $HOST1 for dir in /local/apps/*; do ls -lrt $dir | grep live ; done

Я получаю следующую ошибку:

bash: syntax error near unexpected token `do'

Работает нормально без ssh при локальном выполнении.

Iдаже попробовал

ssh $HOST1 "for dir in /local/apps/*; do ls -lrt $dir | grep live ; done"

но это дало неожиданный результат.Каков правильный формат для цикла for через ssh?

1 Ответ

0 голосов
/ 25 октября 2018

Попробуйте

ssh $HOST1 'for dir in /local/apps/*; do ls -lrt $dir | grep live ; done'

С двойными кавычками, что $dir будет расширяться на локальном компьютере, а не как часть команды удаленного SSH.

Просто для справки,Причина, по которой

ssh $HOST1 for dir in /local/apps/*; do ls -lrt $dir | grep live ; done

не работает, заключается в том, что она интерпретируется как

ssh $HOST1 'for dir in /local/apps/*'
do ls -lrt $dir | grep live
done

с for, работающим под SSH на удаленной машине, и do и doneработает локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...