Всем привет. Есть некий фрагмент bash скрипта.
команда без нужных нам аргументов
zenity_command="zenity --list --radiolist --title=\"MONITOR MODE\" --text=\"выберите wifi adapter\" --column=\">\" --column=\"Adapters:\""
получаем аргументы в lst
lst=$(ip l | sed '/link/d' | awk '{print $2}' | sed 's/\://' | tr -s '\r\n' ' ')
создаём временный файл чтобы достать аргументы для команды.
знаю что костыльный метод, но количество аргументов нам
неизвестно, нормальный алгоритм я пока-что не придумал
touch tsunamiTEMPFILE.txt
for item in $lst
do
пробрасываем аргументы через item, и доводим их до ума
добавляя FALSE (так нужно для zenity). Далее кидаем их в
временный файл, ибо как через for сразу их закидывать в
переменную zenity_command я не разобрался, буду рад
помощи в корекции этого алгоритма
echo -n " FALSE \"$item\"" >> tsunamiTEMPFILE.txt
done
получаем аргументы в arguments_zenity ; удаляем
временный файл ; выполняем команду с аргументами
arguments_zenity=$(cat tsunamiTEMPFILE.txt); rm -f tsunamiTEMPFILE.txt
$zenity_command$arguments_zenity
Конец кода. Ожидание : https://imgur.com/T8skhRu.png Реальность : https://imgur.com/hktXriy.png
p.s: нам неизвестно количество wifi адаптеров p.s2: пожалуй я добавил слишком много комментариев, но так вы сразу разберётесь в чем дело p.s3: скорее всего там просто где-то символ перевода строки спрятался, и поэтому gui в zenity ломается. но найти я его никак не могу