używam powłoki bash na Linux i chcą korzystać z ponad 10 parametrów w skrypcie powłokiJak obsługiwać więcej niż 10 parametrów w łupinach
Odpowiedz
Użyj nawiasów klamrowych, aby ustawić je:
echo "${10}"
You można również iteracyjne nad parametrów pozycyjnych tak:
for arg
lub
for arg in "[email protected]"
lub
while (($# > 0)) # or [ $# -gt 0 ]
do
echo "$1"
shift
done
i spróbuj 'help shift' –
Pamiętaj, że $ {10} będzie działać w bashu, ale ograniczy twoją przenośność, ponieważ wiele implementacji sh zezwala tylko na jednocyfrowe specyfikacje. –
@William: Istnieje kilka skorup, które go nie zaakceptują, takie jak oryginalna starsza skorupa Bourne'a, ale oprócz powłok wymienionych w innym komentarzu (Bash, dash, ksh i zsh), działa również w csh, popiół tcsh i Busybox. –
Można mieć maksymalnie 255 parametrów z:
${255}
Myślę, że ten limit zależy od powłoki. Bash, dash, ksh i zsh wydają się nie mieć tego. 'sh -c 'echo $ {333}'/usr/bin/*' –
Moja powłoka wygodnie idzie do 2 milionów 'set $ (seq 2097152); echo $ {2097152} ' –
Należy pamiętać, że mając 10 parametrów uczynią to dość kłopotliwe. Być może lepiej byłoby zamiast tego użyć opcji (np. '-a 1' lub' --foo = bar'). Zobacz 'man getopt',' man getopts' i 'man bash', aby uzyskać opcje. – Mikel
Ponadto, jeśli wszystko, co chcesz zrobić, to przekazać wszystkie opcje do innego polecenia, możesz użyć '" $ * "' lub '" $ @ "', ale zauważ, że '" $ @ "' jest lepsze, ponieważ robi to dobra rzecz z białymi znakami. – Mikel