我在脚本中有以下开关案例:
while [ $# -gt 0 ] ; do
case "$1" in
-f|--file)
shift
f=$1
;;
-s|--string)
s=$2
shift
;;
-c|--client)
c=$3
shift
;;
-h|-help)
_usage
;;
-*)
_usage
;;
esac
shift
done
但是,当我运行它时,我永远无法-c
通过传递给它的字符串获得传递。它总是空白的。我不确定为什么会这样,因为传递了前两个变量(即 -f 和 -s)。有人可以建议为什么会发生这种情况吗?
这是我所做的,期望 ybdemo 将传递给 -c:
./find_prod_andfix.sh -f /etc/bar/active_clients -s foo -c "ybdemo"
Mon Aug 27 14:51:22 EDT 2018 find_prod_andfix.sh 11351 INFO: /etc/bar/active_clients
Mon Aug 27 14:51:22 EDT 2018 find_prod_andfix.sh 11351 INFO: foo
Mon Aug 27 14:51:22 EDT 2018 find_prod_andfix.sh 11351 INFO:
Mon Aug 27 14:51:22 EDT 2018 find_prod_andfix.sh 11351 INFO: Checking -- Client ID:
这是我在脚本中回显上面信息的地方:
if [[ -z $c ]]; then
_info ${f}
_info ${s}
_info ${c}
_info "Checking ${line} -- Client ID: ${CLIENT_ID}"
fi
任何建议都会非常有帮助。
您正在使用以下方法超越自己
shift
: