Mul on vaja kontrollida sisendargumendi olemasolu. Mul on järgmine skript
if [ "$1" -gt "-1" ]
then echo hi
fi
Ma saan
[: : integer expression expected
Kuidas ma saan kõigepealt kontrollida, kas sisend argument1 on olemas?
See on:
if [ $# -eq 0 ]
then
echo "No arguments supplied"
fi
Muutuja $#
ütleb teile, mitu sisendargumenti skriptile edastati.
Või saate kontrollida, kas argument on tühi string või mitte nagu:
if [ -z "$1" ]
then
echo "No argument supplied"
fi
Lüliti -z
testib, kas laiend "$1" on null string või mitte. Kui see on null string, siis täidetakse keha.
Proovige:
#!/bin/bash
if [ "$#" -eq "0" ]
then
echo "No arguments supplied"
else
echo "Hello world"
fi
Teine võimalus tuvastada, kas skriptile on antud argumente:
((!$#)) && echo No arguments supplied!
Pange tähele, et (( expr ))
põhjustab väljendi hindamise vastavalt Shell Arithmetic reeglitele.
Selleks, et argumentide puudumisel väljuda, võib öelda:
((!$#)) && echo No arguments supplied! && exit 1
Teine (analoogiline) viis ülaltoodut öelda oleks:
let $# || echo No arguments supplied
let $# || { echo No arguments supplied; exit 1; } # Exit if no arguments!
Ahelp let
ütleb:
let: let arg [arg ...]
Aritmeetiliste väljendite hindamine.
...
Lõpeta staatus: Kui viimane ARG annab tulemuseks 0, tagastab let 1; vastasel juhul tagastab let 0.