Tengo el siguiente script simple:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Salida en caso de que corra con sh file.sh
:
Bash version ...
{1..99..2}
Salida en caso de que corra con bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Tengo dos consultas:
Si he escrito una línea shabang que especifica shell, ¿no debería ejecutarse con bash si uso
sh file.sh
obash file.sh
?Entiendo que
$BASH_VERSION
sh no lo reconoce, pero ¿cuál es el problema con for loop? ¿Por qué no se imprimen los números?
fuente
dash
, que como usted dicesh
en Ubuntu, no está presente principalmente "para ser un aviso de emergencia para las circunstancias de DIRE", sino para que el sistema pueda ejecutarse y comenzar rápidamente . De esta manera,dash
es muy adecuado para su uso en un sistema operativo moderno, pero lo que está bien adaptado para es como un bajo perfil, cáscara rápido para scripting - en particular, la ejecución de scripts del sistema al iniciar un grande, complejo, sistema operativo moderno, con un mínimo Rendimiento sobrecarga.sh
bastante constantemente, y particularmente intensivamente como arranca Ubuntu. Es principalmente importante para sus usos automáticos de secuencias de comandos, y ese es un caso de uso muy importante en Ubuntu. (Si tuviera que eliminar el/bin/sh
enlace simbólico, de modo que, en efecto, no hubiera "SH", las cosas saldrían terriblemente mal: Ubuntu no podría arrancar en un estado utilizable).