Sto imparando shell da tutorialspoint oggi: link
E ho copiato questo blocco di codice in un file 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
Ma quando lo salvo, ho cose come:
...
-n 4
-n 3
-n 2
-n 1
-n 0
...
A quanto pare, il flag -n
non funziona in echo -n "$b "
.
Quindi sposto lo stesso file sul mio sistema virtuale Ubuntu. Lo esegue.
Ho ricevuto:
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
Sono confuso, anche se Ubuntu usa dash come predefinita sh
, ma OSX usa bourne shell
ufficiale come sh
, perché lo script ha fallito qui? Come risolverlo?