Estoy aprendiendo shell desde tutorialspoint hoy: enlace
Y copié este bloque de código en un archivo loop.sh
:
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1
do
b="$a"
while [ "$b" -ge 0 ] # this is loop2
do
echo -n "$b "
b='expr $b - 1'
done
echo
a='expr $a + 1'
done
Pero cuando lo excuto, tengo cosas como:
...
-n 4
-n 3
-n 2
-n 1
-n 0
...
Aparentemente, el indicador -n
no funciona en echo -n "$b "
.
Luego muevo el mismo archivo a mi sistema virtual de Ubuntu. Lo ejecuta.
Tengo :
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 usa el guión como su sh
predeterminado, pero OSX usa el bourne shell
oficial como su sh
, ¿por qué falló el script aquí? ¿Cómo solucionarlo?