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

wstecz

Date: 2020-10-24T13:48:25+02:00