Co to „-n” oznacza? [BASH]

Spójrz na ten przykładowy kod:

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 

Dla na przykład wyjście terminala $./new.sh q w e r t y u i o p będzie wyglądać następująco:

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 

A wyjście $./new.sh q w e r t y u i o będzie:

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. 

Pytanie : Co oznacza -n?

Komentarze

Odpowiedź

[ to inna nazwa wbudowanego test, patrz tutaj i tutaj , również to .

Ta sekwencja if instrukcje byłyby prawdopodobnie lepsze jako pętla. W Bashu moglibyśmy użyć rozwinięcia pośredniego:

for ((i=1 ; i <= 10 ; i++)) ; do if [ -n "${!i}" ] ; then echo "${!i}" fi done 

Najczęstszym idiomem byłoby prawdopodobnie użycie shift na każdym iteracja, ale niszczy listę argumentów.

Również cytowanie: tutaj $0 jest poza cudzysłowami. W większości przypadków bardziej przydatne jest trzymanie wszystkich rozwinięć zmiennych w cudzysłowach, chyba że wyraźnie chcesz dzielenie słów i rozwijanie nazw plików.

echo "Name of this script: "$0"" 

Więc raczej napisz:

echo "Name of this script: $0" 

Komentarze

  • Możesz użyć shift wewnątrz funkcji i nie wpływać na listę argumentów wywołującego ', chociaż użycie funkcji tylko do tego jest oczywiście trochę hackish.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *