Станьте переменными от списка Zenity, сгенерированного из .csv файла

Я пытаюсь получить значение от zenity список. Но это не работает. Некоторая справка была бы хороша :)

Если я удаляю ans=$ Я получаю значение от zenity в терминале как это:

10.33.54.13|10.33.54.13

Но я не знаю, как заставить переменную из терминала произвести.

  • data.csv:

    192.168.10.1;switch0;255.255.255.0;192.168.1
    192.168.10.2;switch1;255.255.255.0;192.168.1
    192.168.10.3;switc2;255.255.255.0;192.168.1
    
  • Код:

    #!/bin/bash
    INPUT=data.csv
    OLDIFS=$IFS
    IFS=";"
    while read IP hostname subnetmask gateway
    do
    echo -e "$IP"
    
    done < $INPUT|ans=$(zenity --list  --text "Choose witch IP-address you want to connect to " --column "Choose")
    echo "You chose: $ans"
    
3
задан 30 July 2015 в 15:11

3 ответа

Ваш исходный код не работал, потому что необходимо получить целый цикл с условием продолжения в ans переменная.

Попытка следующий отрывок:

#!/bin/bash
INPUT=data.csv
OLDIFS=$IFS
IFS=";"
ans=$(while read IP hostname subnetmask gateway
do
echo -e "$IP"

done <$INPUT|zenity --list  --text "Choose witch IP-address you want to connect to " --column "Choose")
echo "You chose: $ans"
3
ответ дан 1 December 2019 в 15:56

Одна опция состоит в том, чтобы разделить конструкцию входного списка от выполнения команды zenity, возможно, с помощью массива удара, например,

#!/bin/bash

infile="data.csv"

declare -a iplist

while IFS=\; read -r IP hostname subnetmask gateway; do 
  iplist+=("$IP")
done < "$infile"

ans="$(zenity --list \
              --text "Choose which IP-address you want to connect to " \
              --column "Choose" "${iplist[@]}")"

echo "You chose: $ans"

Также примечание, которое Вы не должны сохранить и восстановить IFS, так как можно определить пользовательское IFS=\; на read командная строка.

0
ответ дан 1 December 2019 в 15:56

Я предполагаю, что Вы просто хотите что-то вроде этого; это сохранит выбор в a $var переменная:

var="$(awk -F ';' '{print $1}' data.csv | zenity --list --text "Choose witch IP-address you want to connect to " --column "Choose" 2>/dev/null)"

enter image description here

enter image description here

enter image description here

1
ответ дан 1 December 2019 в 15:56

Другие вопросы по тегам:

Похожие вопросы: