Я пытаюсь написать bash-скрипт для автоматизации установки моих пакетов. Таким образом, идея состоит в том, чтобы прочитать файл .csv (packages.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 аргумента. Можно ли как-то включить их в контрольный список?