0
我正在運行下面的腳本,但它看起來像$文件名或$ srvname沒有得到輸入值。 說例如:./test.sh -n abcd.net給出輸出回顯'文件名或節點名稱必須定義'。 這意味着,$ srvname沒有得到值「abcd.net」,請告訴我做錯了什麼。 ?使用getopts沒有得到輸入值
set -x
usage() {
echo "usage: $0 -n <nodename>"
echo "usage: $0 -f <filename>"
echo "usage: $0 -h <help>"
}
while getopts ":nfh:" opt; do
case "$opt" in
n) srvname="$OPTARG" ;;
f) filename="$OPTARG" ;;
h) # help
usage
exit 0
;;
:) echo "Error: -$OPTARG requires an argument"
usage
exit 1
;;
?) echo "Error: unknown option -$OPTARG"
usage
exit 1
;;
esac
done
function dosomecheck {
echo "do some checks"
}
if [ "$filename" != "" ] ; then
# read file
for x in `cat $filename` ; do
dosomecheck $x
done
fi
if [ "$srvname" != "" ] ; then
# read file
for x in $srvname ; do
dosomecheck $x
done
fi
在此先感謝
雅我運行腳本與選項-h時出現錯誤。我是否還需要包含幫助選項以及$ OPTARG? 「錯誤:-h需要參數」 – user3834663
@ user3834663如果您在h'h:'之後意外地使用了冒號,請檢查您的代碼,因爲這樣做會說使用'-h'的時候也需要一個參數。 –