📅  最后修改于: 2023-12-03 14:51:49.155000             🧑  作者: Mango
在 Linux 环境下,Bash 脚本是一种非常常用的编程方式。在编写 Bash 脚本时,很可能需要传递参数来控制脚本的行为。本文将介绍如何传递和解析 Bash 脚本参数和参数。
Bash 脚本接受通过命令行传递的参数,格式为 ./script.sh arg1 arg2 ...
。其中,script.sh
是脚本文件名,arg1
、arg2
等是参数。
可以使用 $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
是选项,arg1
和 arg2
是参数。选项和参数之间可以用空格隔开,也可以不用空格隔开。常用的选项有单个字母的选项(例如 -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