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.
help test
cikket?[
és-n
, borzasztóan lehet keresni.bash -n myscript
, akkor egy szintaxis ellenőrzést végez a parancsfájlon a futtatás helyett.