Назначить список каталогов для переменной в bash-скрипте через ssh - PullRequest
0 голосов
/ 06 октября 2011

Я пытаюсь подключиться по ssh к удаленному компьютеру, получить список каталогов, назначить его переменной, а затем хочу использовать эту переменную в оставшейся части сценария на локальном компьютере.

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

ssh -t user@server "ls /dir1/dir2/; exit; bash"

я получу список каталогов.Если я вместо этого сделаю:

ssh -t user@server "set var1=`ls /dir1/dir2/`; exit; bash"

вместо этого выдаст ошибку ls, что каталог не найден.Также следует отметить, что это происходит до того, как меня спросят о ключевой фразе ssh, что заставляет меня думать, что она выполняется как-то локально.

Есть идеи, как создать локальную переменную со списком каталогов удаленного хоста в скрипте bash?

Ответы [ 2 ]

3 голосов
/ 06 октября 2011

Просто

var1=( $(ssh user@server ls /dir1/dir2) )

, затем протестируйте его:

for line in "${var1[@]}"; do echo "$line"; done

Тем не менее, я бы предпочел

ssh user@server find /dir1/dir2 -maxdepth 1 -print0 | 
    xargs -0

Это будет

  • намного лучше справляется со специальными именами файлов
  • будьте более гибкими (man find(1))
  • добавляя -type f для ограничения только файлами
0 голосов
/ 06 октября 2011

Ваша команда в кавычках выполняется перед выполнением команды ssh. Выход из одинарной кавычки должен исправить

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