Co to znamená „-n“? [BASH]

Podívejte se prosím na tento ukázkový kód:

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 

Pro například koncový výstup $./new.sh q w e r t y u i o p bude:

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 výstup $./new.sh q w e r t y u i o bude:

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. 

Otázka : Co znamená -n?

Komentáře

Odpověď

[ je jiný název pro test vestavěný, viz zde a zde , také toto .

Ta sekvence if prohlášení by pravděpodobně bylo lepší jako smyčka. V Bash bychom mohli použít nepřímou expanzi:

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

Častější idiom by pravděpodobně byl použít shift na každém iterace, ale zničí seznam argumentů.

Také citace: zde $0 je mimo uvozovky. Ve většině případů je užitečnější udržovat všechny proměnné v uvozovkách, pokud výslovně nechcete rozdělení slov a rozšíření názvu souboru.

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

Takže raději napište:

echo "Name of this script: $0" 

Komentáře

  • Můžete použít shift uvnitř funkce a neovlivnit seznam argumentů volajícího ', i když použití funkce právě pro toto je samozřejmě trochu hackování.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *