Поинт, хочу странного:
У меня на удаленной машине есть башевская переменная, пусть она будет $USERS и в ней будет массив с юзернеймами.
Есть ли какой-нибудь способ сделать так, чтобы эта переменная появилась у меня на машине?
Самое умное, до чего я дошел, это:
USERS=$(ssh example.com 'echo ${USERS[@]}')
но тогда массив перестает быть массивом.
Есть какие-нибудь идеи?
На работе на серверах только баш =) Одномерный.
И я уже думаю, что оставлю просто изначальный вариант, прогоню вывод в цикле for, и буду считать, что в элементах массива недопустимы пробелы. Когда когда-нибудь в будущем появится первый пробел, начну дальше думать =)
а в чём изначальная задача? Вдруг ты столкнулся с синдромом XY и её надо решать вообще не так? :)
mva, есть хосты, на них есть скрипт (который мэйнтеним не мы), который локально собирает информацию и кладет в переменную в виде массива, мне нужно с моего компьютера собрать информацию с этих хостов, чтобы я мог ее дальше процессить.
учитывая природу шелла, никаких глобальных переменных, которые бы наследовались всеми новыми шелл-сессиями, не существует.
И все эти значения либо собираются при твоём логине по ssh, либо хранятся где-то в файле(ах) и цепляются в сессию при логине...
Ты же был в курсе этого, да?
В смысле я по ssh подключаюсь, запускаю скрипт и в той же сессии хочу результат назад получить.
ну, тогда:
1) интересно почему он экспортирует переменные, а не выводит на экран. Но это я так. В очередной раз удивляюсь черезжопности вариантов, которые люди выбирают для решения задач :)
2) от меня немного ускользает принцип его работы:
Так что в моём представлении единственным вариантом было бы если бы ты его сорсил, а не запускал, что ещё большая черезжопность :)
3) для zsh можно было бы по аналогии с этим (сам поймёшь что из этого эмулирует ssh-сессию с запуском скрипта):
А вот для bash'а у меня пока с наскока не получилось (он не любит внутри цикла апдейтить глобальный массив), но я ещё ковырну
Неправильно написал, действительно скрипт сорсистся, и из него вызывается функция.