Ich habe das folgende einfache Skript:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Ausgabe für den Fall, dass ich laufe mit sh file.sh
:
Bash version ...
{1..99..2}
Ausgabe für den Fall, dass ich laufe mit bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Ich habe zwei Fragen:
Wenn ich eine Shabang-Zeile geschrieben habe, die eine Shell angibt, sollte sie dann nicht mit Bash ausgeführt werden, unabhängig davon, ob ich
sh file.sh
oder verwendebash file.sh
?Ich verstehe, dass
$BASH_VERSION
dies von sh nicht erkannt wird, aber was ist das Problem mit der for-Schleife? Warum werden die Zahlen nicht gedruckt?
quelle
dash
, Wie Siesh
in Ubuntu sagen , ist nicht hauptsächlich "eine Notfallaufforderung für DIRE-Umstände" vorhanden, sondern das System kann schnell ausgeführt und gestartet werden . Auf diese Weisedash
wird auch auf dem Einsatz in einem modernen Betriebssystem geeignet, aber was es ist gut geeignet für ist als Low-Profile, schnell Shell für Scripting - insbesondere System - Skripte läuft , während ein großen, komplexe, moderne OS bootet, mit minimalem Leistungsaufwand.sh
ziemlich ständig und besonders intensiv als Ubuntu-Stiefel. Es ist hauptsächlich wichtig für die Verwendung von automatisierten Skripten, und das ist ein sehr wichtiger Anwendungsfall in Ubuntu. (Wenn Sie den Symlink entfernen würden/bin/sh
- so dass es tatsächlich "kein SH" geben würde - würden die Dinge furchtbar schief gehen: Ubuntu konnte nicht in einen verwendbaren Zustand