Я использую вложенную функцию для разбиения и создания файловой системы для дисков, подключенных к новой коробке Linux.
У меня странная проблема, пытаясь вырваться из всех петель.
Я отслеживаю индекс вложенного цикла и использую "break n".
Когда пользователь отвечает «n» на вопрос «Есть ли у вас дополнительные диски для раздела?» я ожидаю вырваться из всех вложенных циклов и продолжить работу со сценарием, но в результате снова задают вопрос.
Можете ли вы помочь мне понять это?
INIT_STARTED=0
chooseDisks()
{
INIT_STARTED=$((INIT_STARTED+1))
# Choosing which drive to work on
read -p "Please type the name of the disk you want to partition: " DISK
while true; do
read -p "Are you sure you want to continue ? y (partition)/n (choose another drive) /x (continue) " ynx
case $ynx in
[Yy]* )
containsElement "$DISK"
if [ $? == 1 ]; then
initializeDisk $DISK
# remove element from found disk to prevent trying to partition it again.
delete=($DISK)
FOUNDDISKS=( "${FOUNDDISKS[@]/$delete}" )
else
echo "${red}$DISK is not a valid choice, please select a valid disk.${reset}"
chooseDisks
fi
break;;
[Nn]* )
chooseDisks
break $((INIT_STARTED));;
[Xx]* )
return
break;;
* ) echo "Please answer y or n. x to continue the script.";;
esac
done
# Any additional disks to partition?
while true; do
read -p "Do you have any additional drives to partition ? y/n " yn
case $yn in
[Yy]* )
#chooseDisks $FOUNDDISKS
chooseDisks
break $((INIT_STARTED));;
[Nn]* )
return
break $((INIT_STARTED));;
* ) echo "Please answer y or n";;
esac
done
}
Я ожидаю этого:
break $((INIT_STARTED));;
для завершения n-го цикла и выхода из функции.