Vă rugăm să aruncați o privire asupra acestui exemplu de cod:
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
Pentru de exemplu, ieșirea terminalului $./new.sh q w e r t y u i o p
va fi:
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
Și ieșirea $./new.sh q w e r t y u i o
va fi:
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.
Întrebare : Ce înseamnă -n
?
Comentarii
Răspunde
[
este un alt nume pentru încorporarea test
, consultați aici și aici , de asemenea aceasta .
Această secvență de if
declarațiile ar fi probabil mai bine ca buclă. În Bash am putea folosi expansiunea indirectă:
for ((i=1 ; i <= 10 ; i++)) ; do if [ -n "${!i}" ] ; then echo "${!i}" fi done
Cel mai frecvent idiom ar fi probabil să folosești shift
pe fiecare iterație, dar distruge lista argumentelor.
De asemenea, citând: aici $0
se află în afara ghilimelelor. În majoritatea cazurilor, este mai util să mențineți toate extensiile variabile în ghilimele, cu excepția cazului în care doriți în mod explicit divizarea cuvintelor și extinderea numelui de fișier.
echo "Name of this script: "$0""
Deci, mai degrabă scrieți:
echo "Name of this script: $0"
Comentarii
- Puteți utiliza
shift
în interiorul unei funcții și nu afectați lista argumentelor apelantului ', deși utilizarea unei funcții doar pentru asta este evident prost.
help test
?[
și-n
sunt oribile de căutat.bash -n myscript
, face o verificare a sintaxei a> pe script în loc să-l ruleze.