Kup ten samouczek skryptowania powłoki jako PDF za jedyne $5 dla naszego pierwszego skryptu powłoki, po prostu napiszemy skrypt z napisem”Hello World”. Następnie postaramy się wyciągnąć więcej z Hello Worldprogram niż jakikolwiek inny tutorial, który kiedykolwiek przeczytałeś: -)
Utwórz plik (first.sh), jak następuje: first.sh
#!/bin/sh# This is a comment!echo Hello World # This is a comment, too!
pierwsza linia mówi Uniksowi, że plik ma być wykonany przez /bin/sh.Jest to standardowa lokalizacja powłoki Bourne ’ a w prawie każdym systemie UNIX. Jeśli używasz GNU / Linuksa, /bin/sh jest zwykle dowiązaniem symbolicznym do Basha (lub, ostatnio, dash).
druga linia rozpoczyna się specjalnym symbolem: #
. To zaznacza linię jako komentarz i jest całkowicie ignorowana przez powłokę.
jedynym wyjątkiem jest sytuacja, gdy pierwsza linia pliku zaczyna się od #!
– tak jak nasz. Jest to specjalna dyrektywa, którą Unix traktuje specjalnie. Oznacza to, że nawet jeśli używasz csh, ksh lub czegokolwiek innego jako interaktywnej powłoki, to to, co następuje, powinno być interpretowane przez powłokę Bourne ’ a.
podobnie skrypt Perla może zaczynać się od linii #!/usr/bin/perl
, aby powiedzieć Twojej interaktywnej powłoce, że następujący program powinien być wykonywany przez Perla. W przypadku programowania powłoki Bourne ’ a trzymamy się #!/bin/sh.
trzecia linia uruchamia polecenie: echo
, z dwoma parametrami lub dokumentami – pierwszy to "Hello"
; drugi to "World"
.
zauważ, żeecho
automatycznie umieści pojedynczą spację między swoimi parametrami.
symbol#
nadal oznacza komentarz; # i anythingfollowing jest ignorowany przez powłokę.
Teraz uruchomchmod 755 first.sh
, aby plik tekstowy był wykonywalny, i uruchom./first.sh
.
Twój ekran powinien wtedy wyglądać tak:
$ chmod 755 first.sh
$ ./first.sh
Hello World
$
prawdopodobnie się tego spodziewałeś! Możesz nawet po prostu uruchomić:
$ echo Hello World
Hello World
$
teraz zróbmy kilka zmian.
najpierw należy zauważyć, że echo
umieszcza jedną spację między swoimi parametrami. Umieść kilka spacji między „Hello” I „World”. Czego oczekujesz od wyjścia? Co z umieszczeniem znaku zakładki między nimi?
Jak zawsze z programowaniem powłoki, spróbuj i zobacz.
wyjście jest dokładnie takie samo! Wywołujemy programecho
z dwoma argumentami; nie obchodzi go to bardziej, niżcp
o luki między nimi.Teraz zmodyfikuj kod ponownie:
#!/bin/sh
# This is a comment!
echo "Hello World" # This is a comment, too!
tym razem działa. Prawdopodobnie spodziewałeś się tego również, jeśli masz doświadczenie w innych językach programowania. Ale kluczem do zrozumienia tego, co dzieje się w przypadku bardziej złożonych poleceń i skryptów powłoki, jest zrozumienie i umiejętność wyjaśnienia: dlaczego?echo
został wywołany z jednym argumentem – łańcuchem”Hello World”. Dokładnie to wypisuje.
chodzi o to, aby zrozumieć, że powłoka analizuje argumenty przed przekazaniem ich do wywoływanego programu. W tym przypadku usuwa cudzysłowy, ale przekazuje ciąg jako jeden argument.
jako ostatni przykład wpisz następujący skrypt. Spróbuj przed uruchomieniem tego programu przewidzieć:
first2.sh
#!/bin/sh
# This is a comment!
echo "Hello World" # This is a comment, too!
echo "Hello World"
echo "Hello * World"
echo Hello * World
echo Hello World
echo "Hello" World
echo Hello " " World
echo "Hello "*" World"
echo `hello` world
echo 'hello' world
czy wszystko jest tak, jak oczekiwałeś? Jeśli nie, nie martw się! To tylko niektóre z rzeczy, które omówimy w tym samouczku … i tak, będziemy używać bardziej wydajnych poleceń niż echo
!
Wstecz: Filozofia następne: zmienne (Część 1)