В то время как цикл выполняется в подоболочке, поэтому любые изменения, сделанные в переменной в подоболочке, не сообщаются в оболочке отца : https://stackoverflow.com/questions/16854280/modifying-variable-inside-while-loop-is-not-remembered
Для второго вопроса на моей стороне у меня есть :
$ while true; do toto=plop; echo $toto; [[ $toto ]] && break ; done
plop
Так что я думаю, что у вас есть реальная проблема с определением $win_id
внутри цикла.
Podría usar un bucle de matriz anidado, como este
#!/bin/bash
array_0=(one two three four five)
array_1=(x y z)
for a0 in "${array_0[@]}"
do
for a1 in "${array_1[@]}"
do
mkdir -p "$HOME/web/$a0/$a1"
done
done
O, si no le importa evitar el uso de matrices y usar listas de expansión en su lugar, este único comando hará lo mismo:
mkdir -p ~/{one,two,three,four,five}/{x,y,z}