Ta en titt på dette kodeeksemplet:
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 For eksempel vil terminalutgangen til $./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 utgangen til $./new.sh q w e r t y u i o
blir:
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ørsmål : Hva betyr -n
?
Kommentarer
Svar
[
er et annet navn for test
innebygd, se her og her , også dette .
Den sekvensen av if
uttalelser vil trolig være bedre som en løkke. I Bash kunne vi bruke indirekte utvidelse:
for ((i=1 ; i <= 10 ; i++)) ; do if [ -n "${!i}" ] ; then echo "${!i}" fi done
Det vanligste uttrykket ville trolig være å bruke shift
på hver iterasjon, men det ødelegger argumentlisten.
Sitering: her $0
er også utenfor sitatene. I de fleste tilfeller er det mer nyttig å holde alle variable utvidelser innenfor anførselstegn, med mindre du eksplisitt vil ha ordoppdeling og filnavnutvidelse.
echo "Name of this script: "$0""
Så skriv heller:
echo "Name of this script: $0"
Kommentarer
- Du kan bruke
shift
inne i en funksjon og ikke påvirke den som ringer ' s argumentliste, men bruk av en funksjon bare for det er åpenbart litt hackish.
help test
?[
og-n
fryktelige å søke etter.bash -n myscript
gjør, gjør det en syntaks sjekk på skriptet i stedet for å kjøre det.