То же, что опубликовал Сайрус, но с предупреждением
until [[ "$var1" ]]; do
read -p " Write something: " var1
[[ "$var1" ]] || echo "You have not entered anything. Please try again."
done
И это создаст все переменные в одном l oop
vars=(var1 var2 var3)
for varname in ${vars[@]}; {
until [[ "${!varname}" ]]; do
read -p " Write something to $varname: " $varname
[[ "${!varname}" ]] || echo "You have not entered anything. Please try again."
done
}
Мы можем go дальше и использовать массив для хранения данных
for i in {1..3}; {
until [[ "${vars[$i]}" ]]; do
read -p "Write something to var$i: " vars[$i]
[[ "${vars[$i]}" ]] || echo "You have not entered anything. Please try again."
done
}