Команда bash не работает, но ее эхо работает? - PullRequest
0 голосов
/ 04 ноября 2011

Ну, я новичок в Linux, так что это может быть новичком, вот оно:

У меня есть скрипт, в котором я пытаюсь отправить несколько разных заданий на удаленные компьютеры (на самом деле это экземпляры Amazon EC2), эти задания на самом деле являются той же функцией, которую я запускаю с разными параметрами.

в конце концов в коде сценария у меня есть эта строка:

nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

если я сделаю:

echo nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

Я получаю:

nohup ssh -fqi key.pem ubuntu@ec2-72-44-41-228.compute-1.amazonaws.com '(nohup ./Script.sh 11 1&)'

Теперь странная вещь. Если я запускаю код без эха в сценарии, он не работает! в nohup.out (в моем ноутбуке nohup.out не создается в удаленном экземпляре) bash: (nohup ./Script.sh 10 1&): No such file or directory

Файл существует локально и удаленно и имеет вид chmod + x. Если я просто запускаю тот же самый скрипт с эхом перед проблемной строкой, копирую его вывод и вставляю в терминал, он работает!.

Любые подсказки приветствуются, спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Попробуйте удалить одинарные кавычки из $ tmp. Похоже, что bash рассматривает (nohup ./Script.sh 10 1&) как команду без параметров, но технически nohup - это команда с параметрами ./Script.sh 10 1.

0 голосов
/ 04 ноября 2011

Проблема заключается в одинарных кавычках вокруг команды nohup в переменной $tmp.Они не используются в оболочке локально, поэтому SSH передает их дословно.Это означает, что удаленно ssh-сервер пытается интерпретировать (nohup ./Script.sh 10 1&) как команду (ищет файл с таким названием), чего явно нет.Убедитесь, что вы удалили одинарные кавычки в $tmp.

...