shell脚本自定义option
时间: 2023-07-05 08:36:54 浏览: 121
在shell脚本中,我们可以使用getopts命令来自定义option。getopts命令可以用来解析命令行参数,并且可以指定需要的选项和参数。
下面是一个例子:
```bash
while getopts ":a:b:c:" opt; do
case $opt in
a) arg1="$OPTARG";;
b) arg2="$OPTARG";;
c) arg3="$OPTARG";;
\?) echo "Invalid option -$OPTARG" >&2;;
esac
done
```
在这个例子中,我们指定了三个选项:-a,-b和-c。每个选项后面可以跟一个参数。如果用户在命令行中使用了这些选项,则会将选项和参数解析出来,并将其存储在变量中。
例如,如果用户执行以下命令:
```bash
./myscript.sh -a foo -b bar -c baz
```
则将会将选项和参数解析出来,并将其存储在arg1,arg2和arg3变量中,分别为foo,bar和baz。
需要注意的是,上述例子中的冒号(:)表示选项后面需要跟一个参数。如果用户没有提供参数,则会报错。如果选项后面不需要跟参数,则不需要使用冒号。
相关问题
shell脚本如何根据输入的自定义选项来进行不同分支的执行?
在shell脚本中,可以根据用户输入的自定义选项来执行不同的分支,通常通过`case`结构或者`select`语句实现。这里简单介绍两种常用的方式:
1. **case结构**:
```bash
#!/bin/bash
read -p "请输入选项(1, 2, 3): " option
case $option in
1)
# 执行操作1
echo "这是选项1的执行内容"
;;
2)
# 执行操作2
echo "这是选项2的执行内容"
;;
3)
# 执行操作3
echo "这是选项3的执行内容"
;;
*)
# 处理无效选项
echo "未知选项,请选择1, 2或3"
;;
esac
```
在这个例子中,用户输入的选项会匹配到对应的`case`分支。
2. **select语句**(适用于有限的选项集):
```bash
#!/bin/bash
options=("选项1" "选项2" "选项3")
echo "请选择一个选项:"
select opt in "${options[@]}"
do
case $opt in
"选项1")
echo "执行选项1"
;;
"选项2")
echo "执行选项2"
;;
"选项3")
echo "执行选项3"
break
;;
*) echo "无效选项";;
esac
done
```
`select`会让用户从给定的列表中选择,然后`case`根据选中的选项执行相应的操作。
阅读全文