Ce înseamnă acest „-n”? [BASH]

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *