展开

文章目录

修改历史

历史修改版本

  1. 2021-08-07 15:18:24
  2. 2021-08-06 10:12:09

Shell脚本相关记录

2021-08-06 10:11:25 Linux 105

简介

Linux作为程序员比较热衷的开发环境,或多或少都会使用一点点shell。总结一点在日常工作开发过程中使用的比较多的例子,学习一下,提高自己。

1.参数传递

在使用shell脚本的时候,经常会遇到参数需要根据输入进行变化的需求,shell脚本传递参数十分简单,直接在后面接参数即可,然后在脚本中通过 $index 来获取参数的值,如下面的例子所示,shell脚本的内容如下

#/bin/bash
# test.sh

echo "参数1的值为:"$1
echo "参数2的值为:"$2
echo "参数3的值为:"$3

在终端中执行下面的命令

./test.sh 12 34 56

 

输出如下

我们发现参数序号是从已开始计算的,这有点不符合计算机的常规逻辑从0开始计算,其实不然,$0实际上是用来表示了我们的shell脚本文件的名称了,shell脚本代码修改如下

#!/bin/bash
# test.sh

echo "参数0的值为:"$0
echo "参数1的值为:"$1
echo "参数2的值为:"$2
echo "参数3的值为:"$3

然后再执行脚本,发现输出如下

上述的输出结果验证了$0是用来保存我们的shell文件名!

2.参数名传递

除了上面的传递参数方式,在我们日常使用Linux系统的过程中,经常会看见很多命令后面可以带命名参数比如 ls -a,同样的shell脚本也可以实现,通过getopts函数来实现这种方式,getopts函数的格式如下所示

getopts [option[:]] [DESCPRITION] VARIABLE

 

option:表示为某个脚本可以使用的选项 ":" 冒号如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION) VARIABLE:表示将某个选项保存在变量VARIABLE中 

getopts是linux系统中的一个内置变量,一般用在循环中。每当执行循环时,getopts都会检查下一个命令选项,如果这些选项出现 在option中,则表示是合法选项,否则不是合法选项。并将这些合法选项保存在VARIABLE这个变量中。 getopts还包含两个内置变量,及OPTARG和OPTIND OPTARG 就是将选项后面的参数(或者描述信息DESCPRITION)保存在此变量当中。 OPTIND 这个表示命令行的下一个选项或参数的索引(文件名不算选项或参数)

使用下面的示例代码来说明一下getopts的简单用法

#!/bin/bash
# test_param.sh

while getopts ":u:p:d:f:" opt
do
	case $opt in
		u)
		  echo "参数-u的值为:"$OPTARG;;
		p)
		  echo "参数-u的值为:"$OPTARG;;
		d)
		  echo "参数-u的值为:"$OPTARG;;
        f)
          echo "参数-u的值为:"$OPTARG;;
	esac
done

 执行脚本 ./test_param.sh -u user -p 123 -d bbs -f /data/my-tool/ 输出结果如下

3.显示帮助信息

我们在使用Linux命令的时,很多命令都支持-h参数输出帮助帮助信息,我们自己定义的shell脚本同样的也可以支持-h参数,shell脚本示例代码如下

help() {
    echo "脚本参数如下:"
    echo "    -h : 帮助信息"
    echo "    -u : 数据库连接用户名"
    echo "    -p : 数据库登录密码"
    echo "    -d : 目标数据库名"
    echo "    -f : 导出sql文件路径"
    exit 1
}

if [[ $# == 0 || "$1" == "-h" ]]; then
    help
fi

首先定义了help()函数,在函数中输出相关的帮助信息,之后通过判断用户输入的参数是否为-h或者参数个数是否为零,如果满足条件则执行help函数,执行脚本 ./test_param.sh -h 输出结果如下

当前共有0条评论