📜  bash 参数解析 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:28.870000             🧑  作者: Mango

Bash 参数解析 - Shell-Bash

Bash 是类 Unix 环境下常用的一种 shell,而参数解析则是 Bash 的重要功能之一,它可以通过解析命令行参数,实现不同选项的操作,给用户带来更好的使用体验。本文将介绍 Bash 参数解析的相关内容。

常用选项

在 Bash 中,常用的选项一般通过单个字母表示,比如使用 -h 表示查看帮助信息,而使用 -v 表示输出详细的执行信息等。具体常用选项可以参考下表:

| 选项 | 描述 | | ----------- | -------------- | | -h | 显示帮助信息 | | -v | 显示详细信息 | | -f | 使用文件作为输入 | | -o option | 打开某个选项 |

带参数选项

除了常用选项,还有一些带参数的选项,可以通过 : 表示,比如 -o filename 就表示开启 -o 选项,并且需要传入一个参数 filename。以下是一些常见的带参数选项:

| 选项 | 参数 | 描述 | | ----------------- | ------------------- | ---------------------------------------------- | | -o filename | filename | 将输出保存到指定文件中 | | -f filename | filename | 使用指定文件作为输入 | | -n number | number | 设置参数的最大数量 | | -e envvar | envvar | 设置环境变量 | | -d delimiter | delimiter | 使用指定的分隔符,如 -d ',' | | -p prompt | prompt | 自定义输入提示语 | | -s | | 隐藏输入,比如密码等 | | -l value | value | 将字符串转为小写并保存,如 -l "TeSt" 会变为 "test"| | -u value | value | 将字符串转为大写并保存,如 -u "TeSt" 会变为 "TEST"|

代码示例

在 Bash 中,获取用户传入的参数可以通过 $1$2 等依次获取,但这种方式不太方便,可以通过 getopts 函数实现参数解析。下面是一个简单的示例:

while getopts ":hvo:f:" opt; do
  case ${opt} in
    h )
      echo "Usage: -h help, -v verbose, -o <filename> output file, -f <filename> input file"
      ;;
    v )
      VERBOSE=true
      ;;
    f )
      INPUT=$OPTARG
      ;;
    o )
      OUTPUT=$OPTARG
      ;;
    \? )
      echo "Invalid option: -$OPTARG" 1>&2
      exit 1
      ;;
    : )
      echo "Option -$OPTARG requires an argument." 1>&2
      exit 1
      ;;
  esac
done

if [[ -n $INPUT ]]; then
  cat $INPUT
fi

if [[ -n $OUTPUT ]]; then
  echo "Hello World" > $OUTPUT
fi

if $VERBOSE; then
  echo "Verbose mode is on"
fi

代码解释:

  • while getopts ":hvo:f:" opt; do 中的 :hvo:f: 分别表示选项 -h-v-o-f: 表示 -o-f 都需要参数,会被保存在 $OPTARG 中,每次调用 getopts 会获取一次选项。
  • case ${opt} in 中根据选项进行命令的分支判断和执行。
  • if [[ -n $INPUT ]]; then 中的 [[ -n $INPUT ]] 判断输入文件是否存在,如果存在则使用 cat 命令将其输出。
  • if [[ -n $OUTPUT ]]; then 中的 [[ -n $OUTPUT ]] 判断输出文件是否存在,如果存在则使用 echo 命令输出 "Hello World" 到文件中。
  • if $VERBOSE; then 中的 $VERBOSE 判断是否开启了 -v 选项,如果开启则输出 "Verbose mode is on"。

以上示例仅供参考,具体使用可以根据需要进行修改。

总结

本文介绍了 Bash 参数解析的常用选项和带参数选项,并给出了一个简单的代码示例。参数解析是 Bash 中非常常见的一个功能,能够让脚本更加灵活、易用。通过本文的介绍,相信读者已经对其有了更深入的了解。