Mam następujący prosty skrypt:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Dane wyjściowe w przypadku, gdy działam z sh file.sh
:
Bash version ...
{1..99..2}
Dane wyjściowe w przypadku, gdy działam z bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Mam dwa zapytania:
Jeśli napisałem linię shabang określającą powłokę, czy nie powinna ona działać z bash, czy używam,
sh file.sh
czybash file.sh
?Rozumiem, że
$BASH_VERSION
sh nie rozpoznaje, ale z czym jest problem dla pętli? Dlaczego nie drukuje liczb?
źródło
dash
, Które, jak mówisz, zapewniash
Ubuntu, nie występuje głównie „jako powiadomienie alarmowe w przypadku okoliczności DIRE”, ale zamiast tego system może działać i uruchamiać się szybko . W ten sposób,dash
jest dobrze nadaje się do zastosowania w nowoczesnym systemie operacyjnym, ale to, co jest dobrze nadaje się do to jako niskiego profilu, szybki powłoki dla skryptów - szczególnie, uruchamianie skryptów systemu podczas uruchamiania duży, skomplikowany, nowoczesny OS, z minimalnym narzut wydajności.sh
dość stale, a szczególnie intensywnie jako buty Ubuntu. Jest to szczególnie ważne ze względu na zautomatyzowane użycie skryptów, a jest to bardzo ważny przypadek użycia w Ubuntu. (Jeśli było usunąć z/bin/sh
dowiązania - tak, że w efekcie, nie byłoby „nie SH” - wszystko pójdzie bardzo źle: Ubuntu nie mógł uruchomić do stanu używalności.)