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

问题描述 投票:1回答:1

我想将调试工具作为用户输入传递给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}"

我该如何添加呢?

bash debugging sh getopts
1个回答
1
投票

getopt参数,帮助消息和case语句不一致:

  • getopts参数qazxsw poi,指定选项qazxsw poi d:h:p:-d(也-h意味着-p需要参数)
  • 帮助信息,文件选项h:-h
  • case语句,处理选项-d -m -d-p ..

在getopts参数中添加-l并在使用-h后删除l

:
© www.soinside.com 2019 - 2024. All rights reserved.