【发布时间】:2012-11-01 04:23:01
【问题描述】:
我想编写一个需要-c 和-f 的脚本,其中每个都需要一个选项。
当我在下面运行我的脚本时,我遇到了一些意外错误:
$ ./user.sh -c
./user.sh: option requires an argument -- c
Usage: user.sh -c username -f filename
-c username
-f SSH public key
$ ./user.sh -c gg
Error: You have not given a filename.
在第一种情况下,我希望它说我缺少-c 的选项,而在第二种情况下,我希望它说我缺少-f。
问题
我该如何处理这样的错误,我做错了什么?
user.sh
#!/bin/bash
usage () {
echo "Usage: user.sh -c username -f filename"
echo " -c username"
echo " -f SSH public key"
echo ""
}
if ! [ "$*" ]; then
usage
exit 1
fi
while getopts "c:f:" opt; do
case $opt in
c) user=$OPTARG;;
f) filename=$OPTARG;;
\?)
echo
usage
exit 1;;
*) echo "Internal error: Unknown option.";;
esac
done
if ! [ $filename ]; then
echo "Error: You have not given a filename."
exit 1
fi
if ! [ $user ]; then
echo "Error: You have not given an username."
exit 1
fi
【问题讨论】: