Se på denne kodeeksempel:
MIN=10 if [ -n "$1" ]; then echo "$1"; fi if [ -n "$2" ]; then echo "$2"; fi if [ -n "$3" ]; then echo "$3"; fi if [ -n "$4" ]; then echo "$4"; fi if [ -n "$5" ]; then echo "$5"; fi if [ -n "$6" ]; then echo "$6"; fi if [ -n "$7" ]; then echo "$7"; fi if [ -n "$8" ]; then echo "$8"; fi if [ -n "$9" ]; then echo "$9"; fi if [ -n "${10}" ]; then echo "${10}"; fi echo "List of arguments: "$*"" echo "Name of this script: "$0"" if [ $# -lt "$MIN" ]; then echo "Not enough arguments, need $MIN to run."; fi
For Eksempelvis vil terminaludgangen på $./new.sh q w e r t y u i o p være:
q w e r t y u i o p List of arguments: q w e r t y u i o p Name of this script: ./new.sh
Og output fra $./new.sh q w e r t y u i o vil være:
q w e r t y u i o List of arguments: q w e r t y u i o Name of this script: ./new.sh Not enough arguments, need 10 to run.
Spørgsmål : Hvad betyder -n?
Kommentarer
Svar
[ er et andet navn til test indbygget, se her og her , også dette .
Denne sekvens af if udsagn ville sandsynligvis være bedre stillet som en løkke. I Bash kunne vi bruge indirekte ekspansion:
for ((i=1 ; i <= 10 ; i++)) ; do if [ -n "${!i}" ] ; then echo "${!i}" fi done
Det mere almindelige udtryk ville sandsynligvis være at bruge shift på alle iteration, men det ødelægger argumentlisten.
Også citering: her $0 er uden for citaterne. I de fleste tilfælde er det mere nyttigt at holde alle variable udvidelser inden for anførselstegn, medmindre du udtrykkeligt vil have ordopdeling og filnavnudvidelse.
echo "Name of this script: "$0""
Så skriv snarere:
echo "Name of this script: $0"
Kommentarer
- Du kan bruge
shiftinde i en funktion og ikke påvirke den kaldende ' s argumentliste, selvom det kun er en smule at bruge en funktion hackish.
help test?[og-nforfærdelige at søge efter.bash -n myscriptgør, foretager det en syntaks-kontrol på scriptet i stedet for at køre det.