W moim skrypcie bash chciałbym przeanalizować zero, jeden lub dwa parametry (skrypt może je rozpoznać), a następnie przekazać pozostałe parametry do polecenia wywołanego w skrypcie. Jak mogę to zrobić?
bash
command-line
Łukasz Lew
źródło
źródło
$@
zasadniczo traktuje każdy element tablicy jako ciąg znaków w cudzysłowie - są one przekazywane bez możliwości rozwinięcia. Zapewnia również, że każde z nich jest postrzegane jako osobne słowo. To wyjaśnienie wraz ze skryptem testowym demonstrującym różnicę jest tutaj: tldp.org/LDP/abs/html/internalvariables.html#APPREFbash używa polecenia shift :
np. shifttest.sh:
shifttest.sh 1 2 3 produkuje
źródło
$1
bez cytowania ich jako"$1"
, to powłoka dokona podziału na słowa, więc np.foo bar
Zostanie przekazana oddzielnie jakofoo
ibar
.Bash obsługuje podzbiory parametrów (zobacz Podzbiory i podciągi ), więc możesz wybrać, które parametry mają być przetwarzane / przekazywane w ten sposób.
otwórz nowy plik i edytuj go: vim
r.sh
:Uruchom:
wynik to:
źródło