Utworzymy skrypt o nazwie funkcje
, jeśli uruchomimy skypt nic się nie stanie,
ale tworząc link symboliczny o nazwie new
lub delete
zostaną wykonane odpowiednio
funkcje nowy
i delete
.
Skrypt zawiera instrukcję case
, która operuje na nazwie skryptu za pomocą
polecenia $(basename $0)
gdzie $0
to nazwa skryptu, polecenie basename
usuwa ./
z nazwy skryptu.
Konstrukcja $(basename $0)
jest opcjonalna, oznacza to, że jeśli skrypt
znajduje się w ścieżce $PATH
i można go wykonać wpisując jego nazwę beż podania
ścieżki to możemy użyć case "$0" in
Standardowo skrypty umieszczam w katalogu bin
w katalogu domowym, następnie
katalog bin
dodaję w pliku stardowym powłoki do zmiennej $PATH
. W przypadku
powłoki bash jest to plik .bashrc
a dla powłoki zsh jest to plik .zshrc
.
Dobrym zwyczajem jest sprawdzenie, czy katalog ~/bin
istnieje zanim go dodamy
do ścieżki.
if [ -d ~/bin ]; then
export PATH=$PATH:~/bin
fi
można to zapisać w jednej linii bez konstrukcji if
:
[ -d ~/bin ] && export PATH=$PATH:~/bin
Skrypt funkcje
:
function nowy() {
echo funkcja nowy
}
function delete() {
echo funkcja delete
}
case $(basename $0) in
new)
nowy
;;
delete)
delete
;;
esac
Utworzenie linków symbolicznych:
ln -s funkcje new ln -s funkcje delete
Wywołanie skryptu
./new funkcja nowy
./delete funkcja delete
Date: 2020-10-24T13:48:25+02:00 |