如何添加 debug/set -x is bash 脚本作为 getopts 的选项

How to add debug/set -x is bash script as option for getopts

我想在 bash 脚本中将调试工具作为用户输入传递。让我们以下面的代码作为示例脚本。

#!/bin/bash

usage() { echo "Usage: [=12=] [-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}"

如何添加到这里?

getops 参数、帮助消息和 case 语句不一致:

  • getops 参数 d:h:p:,指定选项 -d -h-p(另外 h: 意味着 -h 需要一个参数)
  • 帮助消息,文档选项 -d-m
  • case 语句,处理选项 -d -p -l-h ..

在 getopts 参数中添加 l 并在使用 h

后删除 :
while getopts "d:hlp:" o; do
case "${o}" in
...
    l)  set -x
        ;;
...
    esac
done