使用getopts没有得到输入值
using getopts did not get the input value
我是运行下面的脚本,但是看起来$filename 或$srvname 没有得到输入值。
例如:./test.sh -n abcd.net 给出输出 echo 'Filename or node name must be defined.'
这意味着,$srvname 没有得到值 "abcd.net",请指教我做错了什么。 ?
set -x
usage () {
echo "usage: [=10=] -n <nodename>"
echo "usage: [=10=] -f <filename>"
echo "usage: [=10=] -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
提前致谢
尝试做:
while getopts ":n:f:h" opt;
因为 -n
和 -f
有参数而 -h
没有。
我是运行下面的脚本,但是看起来$filename 或$srvname 没有得到输入值。 例如:./test.sh -n abcd.net 给出输出 echo 'Filename or node name must be defined.' 这意味着,$srvname 没有得到值 "abcd.net",请指教我做错了什么。 ?
set -x
usage () {
echo "usage: [=10=] -n <nodename>"
echo "usage: [=10=] -f <filename>"
echo "usage: [=10=] -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
提前致谢
尝试做:
while getopts ":n:f:h" opt;
因为 -n
和 -f
有参数而 -h
没有。