我想将调试工具作为用户输入传递给bash脚本。我们将下面的代码作为示例脚本。
#!/bin/bash
usage() { echo "Usage: $0 [-d <Integer>] [-m <String>]" 1>&2; exit 1; }
while getopts "hld:p:" o; do
case "${o}" in
d)
d=${OPTARG}
[[ $d =~ ^[0-9]+$ ]] || usage
;;
p)
p=${OPTARG}
[[ $p =~ [a-zA-Z] ]] || usage
;;
l) # to enable logging/debug -- set -x
l=${OPTARG}
;;
h|*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${d}" ] || [ -z "${m}" ]; then
usage
fi
echo "d = ${d}"
echo "m = ${m}"
我该如何添加呢?
getopt参数,帮助消息和case语句不一致:
d:h:p:
和-d
(也-h
意味着-p
需要参数)h:
和-h
-d
-m
-d
和-p
..在getopts参数中添加-l
并在使用-h
后删除l
: