shell脚本自定义option
时间: 2023-07-05 16:36:54 浏览: 62
在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脚本中,我们可以通过自定义函数来满足我们的需求。函数的定义格式为:
function function-name(){
command1
........
}
或
function-name(){
command1
........
}
函数的调用可以直接写函数名。例如:
hello
向函数传递参数可以使用变量位置$1, $2, $3...$9。例如:
function hello(){
echo "Hello! The first parameter is '$1'."
}
hello good
如果想将函数保存到文件中,可以将函数写入一个函数文件,并通过另一个脚本来调用。例如:
hellofunction文件中的内容:
#!/bin/bash
function hello(){
echo "Hello!"
return 1
}
调用函数文件的脚本:
#!/bin/bash
. hellofunction
hello
在函数中使用变量时,可以通过在外层脚本将变量准备好。全局变量可以在函数内外都定义和使用,而局部变量仅在函数内部定义,函数外部无法使用。局部变量的格式是在变量名前加上local关键字。例如:
全局变量:
#!/bin/bash
function addition() {
result=$(($value1 $value2))
}
value1=$1
value2=$2
result=1
addition $value1 $value2
echo $result
局部变量:
#!/bin/bash
function addition() {
local result=$(($value1 $value2))
}
value1=$1
value2=$2
result=1
addition $value1 $value2
echo $result
需要注意的是,调用函数必须在定义之后,否则会报错。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
shell脚本自定义解析json
以下是一个使用jq解析json的shell脚本示例:
```shell
#!/bin/bash
# 从json文件中提取值
value=$(cat example.json | jq '.key')
# 输出提取的值
echo $value
```
在上面的示例中,我们使用jq解析名为example.json的json文件中的“key”键的值,并将其存储在变量“value”中。然后,我们使用echo命令输出该值。
请注意,要运行此脚本,您需要在系统上安装jq解析器。在大多数Linux发行版中,您可以使用以下命令安装jq:
```shell
sudo apt-get install jq
```