Я пытаюсь написать скрипт bash для автоматизации установки моих пакетов. Идея в том, чтобы читать .CSV-файл (пакеты.csv) как этот:
pkg,Description,option
wget,file downloader,on
curl,tool to transfer data from or to a server,on
nano,text editor for Unix-like computing systems,off
emacs,An extensible customizable free/libre text editor — and more,on
создайте массив для каждого столбца (без заголовка), а затем передайте массивы в контрольный список диалогового окна.
#!/bin/bash
input="packages.csv"
while IFS=',' read -r col1 col2 col3
do
for a in $col1; do
array_col1+=("$a")
done
for b in $col2; do
array_col2+=("$b")
done
for c in $col3; do
array_col3+=("$c")
done
done < "$input"
array1=("${array_col1[@]:1}")
array2=("${array_col2[@]:1}")
array3=("${array_col3[@]:1}")
let num=${#array2[*]}-1
for i in $(seq 0 $num); do
list[i]=$(echo ${array1[i]} ${array2[i]} ${array3[i]})
done
OPTION=$(dialog --checklist "Choose packages:"
10 60 4
${list[*]})
exitstatus=$?
if [ $exitstatus = 0 ]; then
echo "$OPTION"
else
echo "Cancel"
fi
Я получил его работу в какой-то момент, но без пробелов в описании. После того, как я сделал некоторые изменения для того, чтобы включить пространства он не работает вообще. Как я могу это исправить?
Фактически в моем .csv-файл у меня более 3 столбцов, но контрольный список bash ожидает 3 аргумента. Можно ли как-то включить их в список?