Hai messo '#!/bin/bash' ma poi esegui lo script con 'sh', perché?
Su ubuntu, Bash è la shell predefinita; una volta reso eseguibile, puoi eseguire lo script con il suo percorso assoluto o relativo.
o, per esempio, dalla directory dello script:
se vuoi eseguire lo script indicandone la shel Bash, puoi eseguirlo con:
Se ho capito bene, vuoi passare come come parametro dello script, il numero di cicli da eseguire.
se vuoi continuare ad usare il ciclo while...
con Bash:
Codice: Seleziona tutto
#!/bin/bash
msg_error="Devi passare un unico parametro, intero"
if [ "$#" -eq "1" ]
then
if [[ ! $1 =~ ^[0-9]+$ ]] ;then echo "$msg_error 1"; exit;fi
else
echo "$msg_error 2"
exit
fi
i=0
while [ "$i" -le "$1" ];do
echo "Ciclo n° $i"
((i++))
done
con sh devi eliminare i bashismi
Codice: Seleziona tutto
:#!/bin/sh
msg_error="Devi passare un unico parametro, intero"
if [ "$#" -eq "1" ]
then
if ! echo "$1" | grep -Eq "^[0-9]+$" ;then echo "$msg_error 1"; exit;fi
else
echo "$msg_error 2"
exit
fi
i=0
while [ "$i" -le "$1" ];do
echo "Ciclo n° $i"
i=$(expr $i + 1)
done
Naturalmente al posto della riga 'echo "Ciclo n° $i"' devi mettere il codice da eseguire.