Shell-Skript ist praktisch, nicht wahr? Aber ** ich vergesse wie man es schreibt ** Ich bin faul, Google Sensei von Befehl zu Befehl zu fragen, daher fasse ich zusammen, wie man es schreibt.
Shell Art ist kein Level-Artikel, aber es ist ein nützlicher Artikel, wenn Sie ein kleines Skript schreiben. vielleicht.
Es ist ein ungewöhnlicher und chaotischer Eintrag, aber keine Sorge.
Von nun an werde ich über die grundlegende Syntax von Shell-Skripten schreiben. Ernsthaft einfache Syntax.
Es ist leicht zu vergessen, aber lassen Sie uns zuerst Autorität geben. Wenn Sie dies nicht tun, können Sie es nicht tun.
(*'~') $ touch sample.sh
(*'~') $ chmod +x ./sample.sh
Vergessen Sie nicht, die Deklaration in die erste Zeile zu setzen * dies ist ein Shell-Skript *. Es gibt keinen Unterschied zwischen sh und bash, also scheint bash in Ordnung zu sein.
#!/bin/bash
Sie möchten den Kommentar wissen. Fügen Sie am Anfang einfach "#" hinzu.
(*'~') $ cat sample.sh
#!/bin/bash
# echo "not display"
echo "display"
(*'~') $ ./sample.sh
display
Ich werde zusammenfassen, wie man Argumente und Variablen schreibt
Es ist schnell zu schreiben und sich zu erinnern. Die Verwendung des Arguments kann wie im folgenden Skript beschrieben werden. Dies bedeutet, dass es sich um eine Variable mit "$" handelt.
(*'~') $ cat sample.sh
#!/bin/bash
echo $#
echo $@
echo "$@"
echo $*
echo "$*"
echo $0
echo $1
echo $2
echo $9
Wenn Sie ein Argument als Versuch angeben, sieht es so aus.
(*'~') $ ./sample.sh hoge 1
2
hoge 1
hoge 1
hoge 1
hoge 1
./sample.sh
hoge
1
(*'~') $
Erläuterung
--$ #
: Anzahl der an das Skript übergebenen Argumente
--$ @
: Alle an das Skript übergebenen Argumente.
--$ *
: Alle an das Skript übergebenen Argumente. Entspricht "$ @", sofern es nicht von einer Doppelbeschichtung umgeben ist.
-- $ 0
: Der Name des ausgeführten Skripts.
-- $ n
: Das n-te Argument, das an das Skript übergeben wurde. Gibt ein Leerzeichen aus, wenn der Bereich des angegebenen Arguments überschritten wird. Das 10. und die nachfolgenden Argumente können nur erweitert werden, wenn sie als "$ {n}" beschrieben werden.
Wenn Sie es nicht mit doppelter Vorsicht einschließen, ist es dasselbe wie $ @, aber wenn Sie es einschließen, gibt es einen Unterschied zwischen der Ausgabe für jedes Argument oder der Ausgabe mit einem Argument, wie unten gezeigt.
(*'~') $ cat sample.sh
#!/bin/bash
for arg in "$@"
do
echo $arg
done
for arg in "$*"
do
echo $arg
done
(*'~') $ ./sample.sh hoge foo 1
hoge
foo
1
hoge foo 1
Ich habe es bereits als Argument geschrieben, aber wenn ich auf eine Variable verweise, wird $
hinzugefügt. Beim Definieren nicht hinzufügen.
Beachten Sie außerdem, dass ** beim Definieren von Variablen ** keine Leerzeichen links und rechts von =
setzen. Lassen Sie uns verbinden und schreiben.
(*'~') $ cat ./sample.sh
#!/bin/bash
hoge="This is Hoge"
echo $hoge
(*'~') $ ./sample.sh
This is Hoge
Erweitern Sie Variablen in einer Zeichenfolge. Schreiben Sie einfach Variablen in Doppelbeschichtung.
(*'~') $ cat ./sample.sh
#!/bin/bash
hoge="This is Hoge"
echo "What is this? $hoge"
(*'~') $ ./sample.sh
What is this? This is Hoge
Das Ergebnis der Befehlsausführung kann in einer Variablen gespeichert werden. Beschreiben Sie den Befehl, den Sie ausführen möchten, in $ ().
(*'~') $ cat ./sample.sh
#!/bin/bash
hoge=$(echo "This is Hoge")
echo "What is this? $hoge"
(*'~') $ ./sample.sh
What is this? This is Hoge
Wie ich etwas früher geschrieben habe, werde ich beschreiben, wie man if-, for- und case-Anweisungen schreibt.
if
AnweisungIch werde es auf jeden Fall benutzen. Ich habe eine kleine Angewohnheit. Es gibt Vergleichsoperatoren wie "-n" und "-z", aber es ist ziemlich verwirrend, daher denke ich, dass es einfacher ist, einen Vergleich wie "" = "$ hoge" "durchzuführen. Übrigens ** Stellen Sie sicher, dass Sie die Variable in Doppelmantel einschließen und als Zeichenfolge vergleichen **
(*'~') $ cat sample.sh
#!/bin/bash
if [ "" = "$1" ]; then
echo "params not given"
fi
if [ "" != "$1" ]; then
echo "params given $1"
fi
(*'~') $ ./sample.sh
params not given
(*'~') $ ./sample.sh hoge
params given hoge
if ~ else
Dies ist eine weitere häufig verwendete Syntax. Vergiss jedes Mal "elif".
(*'~') $ cat sample.sh
#!/bin/bash
if [ "hoge" = "$1" ]; then
echo "params is hoge"
elif [ "foo" = "$1" ]; then
echo "params is foo"
else
echo "params are not hoge or foo"
fi
(*'~') $ ./sample.sh hoge
params is hoge
(*'~') $ ./sample.sh foo
params is foo
(*'~') $ ./sample.sh other
params are not hoge or foo
for
AnweisungIch habe es ein bisschen früher gemacht
(*'~') $ cat sample.sh
#!/bin/bash
for arg in "$@"
do
echo $arg
done
(*'~') $ ./sample.sh hoge foo 1
hoge
foo
1
case
AussageIch benutze es nüchtern
(*'~') $ cat sample.sh
#!/bin/bash
case "$1" in
hoge)
echo "params is hoge"
;;
foo)
echo "params is foo"
;;
*)
echo "params are not hoge or foo"
;;
esac
(*'~') $ ./sample.sh hoge
params is hoge
(*'~') $ ./sample.sh foo
params is foo
(*'~') $ ./sample.sh other
params are not hoge or foo
Hier Dokument, das nüchtern und bequem ist. Natürlich können Sie es in der Shell verwenden. Wenn Sie den ersten EOS-Teil mit einer einzigen Warnung einschließen, wird die Variable nicht erweitert. EOS kann übrigens alles sein, solange das erste und das letzte Zeichen ausgerichtet sind. Als Konvention, wenn alle Großbuchstaben.
(*'~') $ cat sample.sh
#!/bin/bash
cat << EOS
you can discribe multiple lines.
$1
EOS
cat << 'EOS'
$1
EOS
(*'~') $ ./sample.sh hoge
you can discribe multiple lines.
hoge
$1
Geben Sie dem Befehl exit eine Nummer, um das Skript vorzeitig zu beenden. "0" ist eine normale Beendigung und "1" ist eine abnormale Beendigung. Es wird hauptsächlich verwendet, um die Verarbeitung zu stoppen, wenn nicht genügend Argumente vorhanden sind.
(*'~') $ cat sample.sh
#!/bin/bash
case "$1" in
0)
echo "success"
exit 0
;;
*)
echo "error"
exit 1
;;
esac
echo "can't reach"
(*'~') $ ./sample.sh 0
success
(*'~') $ ./sample.sh 1
error
Wie wäre es mit so etwas?
Ich habe keinen Eintrag gefunden, der systematisch beschrieben wurde (wahrscheinlich nicht leicht zu finden), also habe ich ihn geschrieben. Schließlich habe ich das Gefühl, etwas zu verstehen, wenn ich es selbst schreibe.
Wir werden zu einem späteren Zeitpunkt eine erweiterte Version hinzufügen.
Recommended Posts