J'ai le script simple suivant:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Sortie au cas où je courrais avec sh file.sh
:
Bash version ...
{1..99..2}
Sortie au cas où je courrais avec bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
J'ai deux requêtes:
Si j'ai écrit une ligne de shabang spécifiant le shell, ne devrait-elle pas fonctionner avec bash, que j'utilise
sh file.sh
oubash file.sh
?Je comprends que ce
$BASH_VERSION
n'est pas reconnu par sh mais quel est le problème avec la boucle for? Pourquoi n'imprime-t-on pas les chiffres?
la source
dash
, Qui , comme vous le ditessh
dans Ubuntu, n'est pas présent principalement «pour être une invite d'urgence pour les circonstances DIRE», mais plutôt pour que le système puisse fonctionner et démarrer rapidement . De cette façon, ildash
est bien adapté à une utilisation dans un système d' exploitation moderne, mais ce qu'il est bien adapté pour est un profil bas, shell rapide pour les scripts - en particulier, l' exécution de scripts système lors du démarrage d' un grand système d' exploitation complexe, moderne, avec un minimum frais généraux de performance.sh
assez constamment, et particulièrement intensivement lors du démarrage d'Ubuntu. C'est principalement important pour ses utilisations de script automatisées, et c'est un cas d'utilisation très important dans Ubuntu. (Si vous supprimiez le/bin/sh
lien symbolique - de sorte qu'il n'y aurait en fait «aucun SH» - les choses iraient terriblement mal: Ubuntu ne pourrait pas démarrer dans un état utilisable.)