📜  如何传递和解析 Linux Bash 脚本参数和参数(1)

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

如何传递和解析 Linux Bash 脚本参数和参数

在 Linux 环境下,Bash 脚本是一种非常常用的编程方式。在编写 Bash 脚本时,很可能需要传递参数来控制脚本的行为。本文将介绍如何传递和解析 Bash 脚本参数和参数。

传递参数

Bash 脚本接受通过命令行传递的参数,格式为 ./script.sh arg1 arg2 ...。其中,script.sh 是脚本文件名,arg1arg2 等是参数。

可以使用 $0 获取脚本的文件名,使用 $1$2 等获取传递的参数。例如:

echo "脚本文件名:$0"
echo "第 1 个参数:$1"
echo "第 2 个参数:$2"

运行命令 ./script.sh arg1 arg2,输出如下:

脚本文件名:./script.sh
第 1 个参数:arg1
第 2 个参数:arg2
解析参数

使用 $1$2 等获取参数并不方便,因为需要知道参数的位置。更好的方式是使用选项(option)和参数(argument)的方式来传递参数。例如:

./script.sh -a arg1 -b arg2

在这个例子中,-a-b 是选项,arg1arg2 是参数。选项和参数之间可以用空格隔开,也可以不用空格隔开。常用的选项有单个字母的选项(例如 -a-b)和长选项(例如 --verbose--output),长选项一般用两个减号。

以下是一种解析选项和参数的方式:

while getopts ":a:b:c:" opt; do
  case $opt in
    a) arg1="$OPTARG"
    ;;
    b) arg2="$OPTARG"
    ;;
    c) arg3="$OPTARG"
    ;;
    \?) echo "无效的选项: -$OPTARG" >&2
    ;;
  esac
done

echo "arg1=$arg1, arg2=$arg2, arg3=$arg3"

使用 getopts 函数来解析选项和参数。:a:b:c: 中的字母表示可选的选项,后面的冒号表示该选项需要一个参数。例如,c: 表示 -c 选项需要一个参数。while 循环会遍历所有传递的选项和参数。

运行命令 ./script.sh -a value1 -b value2 -c value3,输出如下:

arg1=value1, arg2=value2, arg3=value3

如果传递了无效的选项,例如 ./script.sh -d,则会输出错误信息:

无效的选项: -d