Eu tenho o seguinte script simples:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Saída no caso de executar com sh file.sh:
Bash version ...
{1..99..2}
Saída no caso de executar com bash file.sh:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Eu tenho duas consultas:
Se eu escrevi uma linha shabang especificando o shell, ele não deveria rodar com o bash, se eu uso
sh file.shoubash file.sh?Eu entendo que
$BASH_VERSIONnão é reconhecido por sh, mas qual é o problema com o loop for? Por que não está imprimindo os números?
dash, Que, como você dizshno Ubuntu, não está presente principalmente "como um prompt de emergência para as circunstâncias do DIRE", mas para que o sistema possa executar e iniciar rapidamente . Desta forma,dashé bem adequado para uso em um sistema operacional moderno, mas o que é bem adequado para é como um low-profile, shell rápido para scripting - particularmente, a execução de scripts do sistema durante a inicialização um grande, complexo, sistema operacional moderno, com o mínimo sobrecarga de desempenho.