Se você usar a whiptail
' --separate-output
option , poderá ser mais fácil trabalhar com:
--separate-output
For checklist widgets, output result one line at a time, with no
quoting. This facilitates parsing by another program.
Em segundo lugar, ao olhar para o seu script original select
, parece-me que:
- Você tem um nome de pasta para cada seleção (
antiferro
para Antiferromagnetic,$pn+U
para DFT + U, etc.). -
Para qualquer escolha, suas ações são sempre:
mkdir $pn/<folder-name> mkdir $pn/<folder-name>/$pn
Você pode simplificar consideravelmente seu script, tornando esses nomes de pastas a saída de whiptail
. Em vez de mBj
que você usa atualmente, por exemplo, use mbj
como tag.
Então você pode fazer:
whiptail --title "Do you want to" --checklist --separate-output \
"Do you want to" 15 60 8 \
"elastic" "Calculate Elastic properties" OFF \
"band" "Calculate band properties" OFF \
"dos" "Calculate band properties" OFF \
"eldensity" "Calculate Electronic Density properties" OFF \
"optic" "Calculate Optical properties" OFF \
"$pn+U" "Do DFT+U calculation" ON \
"mbj" "Do mBj correction" OFF \
"antiferro" "Do Antiferromagnetic calculation" OFF \
3>&1 1>&2 2>&3 |
while read choice
do
mkdir "$pn/$choice/$pn" -p
done
E você pode usar a opção mkdir
de -p
:
-p, --parents
no error if existing, make parent directories as needed