LINUX.ORG.RU

Вопрос по zenity

 


0

1

Подскажите как записать вводимые пользователем данные zenity в переменную?

OUTPUT=$(zenity --forms --width=400 --height=200 --title="Тест" --text="Данные для подключение:" --add-entry="логин" --add-password="Пароль" --add-entry="ip" )
accepted=$?
if ((accepted != 0)); then
    zenity --error --width=150 --height=50  \
       --text="Отказ от ввода данных"
    exit 1
fi
login=$(awk -F, '{print $1}' <<<$OUTPUT )
pass=$(awk -F, '{print $2}' <<<$OUTPUT )
ip=$(awk -F, '{print $3}' <<<$OUTPUT )

echo "Логин" $login
echo "Пароль" $pass
echo "Айпи" $ip

Пробовал через awk, но не выходит данные zenity отдает в виде login|pass|ip



Последнее исправление: vbox (всего исправлений: 1)

Не знаю, что там с zenity, но если у вас разделитель '|', то его и надо использовать, а не запятую. И awk тут совсем лишнее.

IFS='|' read login pass ip <<< "$OUTPUT"
vodz ★★★★★
()

login=$(awk -F, '{print $1}' <<<$OUTPUT )
...

login=$(awk -F"|" '{print $1}' <<<$OUTPUT )
...

Не?

Deleted
()

Лучше использовать разделитель \t или \n — пользоваелю будет сложнее это ввести и всё сломать.

login=0
...
IFS=$'\t' OUTPUT=($(zenity...))
echo ${OUTPUT[login]}
IMHO вышеупомянутый read красивше выглядит как-то вот так:
function ask() {
  while read что спросить
  do zenity ... || kill или break или echo "cancel"
  done
}
function act() {
  while read ответы
  do
    case $ответы in
    ...
    echo что спросить следующим
    ...
  done
}
# потому, что
batch_mode && COPROC=(0,1) || coproc ask
act <&${COPROC[0]} >&${COPROC[1]}

DonkeyHot ★★★★★
()
Последнее исправление: DonkeyHot (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.