Estoy aprendiendo shell desde tutorialspoint hoy:http://www.tutorialspoint.com/unix/unix-shell-loops.htm
Y copié este bloque de código a un archivo loop.sh
:
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # este es loop1
do
b="$a"
while [ "$b" -ge 0 ] # este es loop2
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
Pero al ejecutarlo, obtengo cosas como:
...
-n 4
-n 3
-n 2
-n 1
-n 0
...
Aparentemente, la bandera -n
no funciona en echo -n "$b "
.
Luego moví el mismo archivo a mi sistema virtual Ubuntu. Lo ejecuté.
Obtuve
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
Estoy confundido, aunque Ubuntu utiliza dash como su sh
predeterminado, pero OSX utiliza el bourne shell
oficial como su sh
, ¿por qué falla el script aquí? ¿Cómo puedo arreglarlo?