📜  bash 类似于 cmd 中的选择 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:13:37.879000             🧑  作者: Mango

Bash 类似于 CMD 中的选择 - Shell-Bash

在操作系统中,Bash 是一种常见的 shell,它类似于 Windows CMD 中的命令行环境。Bash 提供了许多有用的命令和工具,让程序员能够更快、更高效地完成工作。 在本文中,我们将介绍 Bash 中类似于 CMD 中的选项。

Bash 类似于 CMD 中的选择

在 CMD 中,我们可以使用 /- 前缀和一个选项来设置命令的行为。例如:

dir /w /p

在上面的命令中,/w/p 是选项。他们告诉 dir 命令输出显示格式和分页处理。

在 Bash 中,我们可以使用 --- 前缀来设置选项,-- 前缀一般用于长选项,- 一般用于短选项。例如:

ls -R

在上面的命令中,-R 是一个选项,它告诉 ls 命令递归地列表目录。

Bash 中的选项解析

Bash 提供了 getopts 命令来解析传递给脚本的选项。getopts 命令有两个参数:选项字符串和变量名。选项字符串包括定义的选项和选项参数,以冒号分隔。变量名是需要解析的选项。

例如下面的脚本:

while getopts ":a:b:" opt; do
  case $opt in
    a)
      echo "Option a has value $OPTARG"
      ;;
    b)
      echo "Option b has value $OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

在执行 ./script.sh -a foo -b 123 命令后,将输出:

Option a has value foo
Option b has value 123

在这个脚本中,我们定义了 -a-b 两个选项。当 getopts 命令解析 -a 选项时,我们可以通过 $OPTARG 变量来访问它的值,同样的,当解析 -b 选项时也是同样的处理。

如果 getopts 命令无法识别选项,则会在错误流中打印一条错误消息,并返回 ?,这时我们可以通过 case 语句中的 "\?" 来判断是否为无效选项,并在错误流中打印错误信息。

总结

Bash 中类似于 CMD 中的选择是非常强大的工具,它们让我们可以控制命令的行为,使我们更方便,更快速地处理任务。同时使用 getopts 命令解析选项也能使我们更好、更准确地获得选项的值。