Mit jelent ez a -n? [BASH]

Kérjük, nézze meg ezt a kódmintát:

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 

Például a $./new.sh q w e r t y u i o p terminál kimenete a következő lesz:

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 

És a lesz:

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. 

: Mit jelent a -n?

Megjegyzések

Válasz

[ a test beépített másik neve, lásd itt és itt , ezt is .

A if szekvenciája az állítások valószínűleg jobbak lennének hurokként. A Bash-ban közvetett bővítést használhatunk:

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

A gyakoribb idióma valószínűleg az lenne, ha a shift -t minden iteráció, de tönkreteszi az argumentumlistát.

Ezenkívül az idézés: itt $0 kívül esik az idézőjelekben. A legtöbb esetben hasznosabb, ha az összes változó kiterjesztését idézőjelek között tartja, hacsak nem kifejezetten szófelosztást és fájlnév-bővítést szeretne.

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

Tehát inkább írja:

echo "Name of this script: $0" 

Megjegyzések

  • Használhatja a (z) shift funkciót egy függvény belsejében, és nem befolyásolhatja a hívó ' argumentumlistáját, bár egy függvény használata csak ehhez nyilvánvalóan kicsit hacker.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük