Chciałbym napisać funkcję, którą mogę wywołać ze skryptu z wieloma różnymi zmiennymi. Z niektórych powodów mam z tym wiele problemów. Przykłady, które czytałem, zawsze używają po prostu zmiennej globalnej, ale to nie uczyniłoby mojego kodu o wiele bardziej czytelnym, o ile widzę.
Przykład zastosowania zgodnego z przeznaczeniem:
#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4
add(){
result=$para1 + $para2
}
add $var1 $var2
add $var3 $var4
# end of the script
./myscript.sh 1 2 3 4
Próbowałem użyć $1
tej funkcji w funkcji, ale potem bierze ona tylko globalny, z którego został wywołany cały skrypt. Zasadniczo szukam czegoś takiego $1
, $2
ale w lokalnym kontekście funkcji. Jak wiesz, funkcje działają w dowolnym odpowiednim języku.
echo $1
iecho $2
w tym.result =
sięresult=$(($1 + $2))
i dodajecho $result
po nim i działa poprawnie, 1 $ i $ 2 to twoje argumenty funkcji.Odpowiedzi:
Aby wywołać funkcję z argumentami:
Funkcja odnosi się do przekazanych argumentów według ich pozycji (a nie nazwy), czyli 1 $, 2 $ i tak dalej. $ 0 to nazwa samego skryptu.
Przykład:
Wynik
źródło
W głównym skrypcie $ 1, $ 2 reprezentuje zmienne, jak już wiesz. W indeksach dolnych lub funkcjach $ 1 i $ 2 będą reprezentować parametry przekazywane do funkcji jako wewnętrzne (lokalne) zmienne dla tego indeksu dolnego.
źródło