Linux运维工程师的Shell脚本参数处理技巧

一、获取命令行参数

Shell脚本中,可以使用$0、$1、$2、$3……$n来获取命令行参数。其中,$0代表脚本本身,$1代表第一个参数,$2代表第二个参数,$3代表第三个参数,以此类推。

#!/bin/bash
echo "脚本名:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"

当我们执行该脚本并传入参数时,输出结果如下:

$ ./test.sh hello world shell
脚本名:./test.sh
第一个参数:hello
第二个参数:world
第三个参数:shell

二、判断参数个数

在脚本中,我们需要对命令行参数进行校验,确保输入参数个数正确。可以使用”$#”获取参数个数。

#!/bin/bash
if [ $# -ne 2 ]; then
    echo "请输入两个参数"
    exit 1
else
    echo "参数个数正确"
fi

执行脚本,当传入的参数个数不为2时,则输出”请输入两个参数”并退出;否则输出”参数个数正确”。

$ ./test.sh
请输入两个参数

$ ./test.sh hello world
参数个数正确

三、判断参数是否为空

在实际的运维场景中,我们往往需要对输入的参数进行非空校验。可以使用”-z”判断参数是否为空。

#!/bin/bash
if [ -z "$1" ]; then
    echo "参数不能为空"
    exit 1
else
    echo "参数不为空"
fi

执行脚本,当传入的参数为空时,则输出”参数不能为空”并退出;否则输出”参数不为空”。

$ ./test.sh
参数不能为空

$ ./test.sh hello
参数不为空

四、使用长选项

在脚本中,我们往往需要使用一些长选项来使得脚本更加易用。可以使用”getopt”命令来实现。

#!/bin/bash
while true; do
    case "$1" in
        -a | --all)
            echo "显示所有信息"
            shift;;
        -v | --version)
            echo "显示版本号"
            shift;;
        -h | --help)
            echo "显示帮助信息"
            shift;;
        --)
            shift
            break;;
        *)
            echo "未知选项:$1"
            exit 1;;
    esac
done

执行脚本,可以传递”-a”、”–all”来显示所有信息;”-v”、”–version”来显示版本号;”-h”、”–help”来显示帮助信息。如果传递了未知选项,则输出”未知选项:XXX”。

$ ./test.sh -a
显示所有信息

$ ./test.sh -v
显示版本号

$ ./test.sh --help
显示帮助信息

$ ./test.sh -x
未知选项:-x

五、处理命令行参数中的路径

在脚本中,我们往往需要处理命令行参数中的路径。可以使用”readlink”命令来获取路径的绝对路径。

#!/bin/bash
filepath=$(readlink -f $1)
echo "文件路径:$filepath"

执行脚本,输出文件路径的绝对路径。

$ ./test.sh test.txt
文件路径:/home/user/test.txt

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/182119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-24 06:18
下一篇 2024-11-24 06:18

相关推荐

  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • Python脚本控制其他软件

    Python作为一种简单易学、功能强大的脚本语言,具有广泛的应用领域,在自动化测试、Web开发、数据挖掘等领域都得到了广泛的应用。其中,Python脚本控制其他软件也是Python…

    编程 2025-04-29
  • 三星内存条参数用法介绍

    本文将详细解释三星内存条上面的各种参数,让你更好地了解内存条并选择适合自己的一款。 一、容量大小 容量大小是内存条最基本的参数,一般以GB为单位表示,常见的有2GB、4GB、8GB…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Spring Boot中发GET请求参数的处理

    本文将详细介绍如何在Spring Boot中处理GET请求参数,并给出完整的代码示例。 一、Spring Boot的GET请求参数基础 在Spring Boot中,处理GET请求参…

    编程 2025-04-29
  • Python input参数变量用法介绍

    本文将从多个方面对Python input括号里参数变量进行阐述与详解,并提供相应的代码示例。 一、基本介绍 Python input()函数用于获取用户输入。当程序运行到inpu…

    编程 2025-04-29
  • lsw2u1:全能编程开发工程师的利器

    lsw2u1是一款多功能工具,可以为全能编程开发工程师提供便利的支持。本文将从多个方面对lsw2u1做详细阐述,并给出对应代码示例。 一、快速存取代码段 在日常开发中,我们总会使用…

    编程 2025-04-29
  • Hibernate日志打印sql参数

    本文将从多个方面介绍如何在Hibernate中打印SQL参数。Hibernate作为一种ORM框架,可以通过打印SQL参数方便开发者调试和优化Hibernate应用。 一、通过配置…

    编程 2025-04-29
  • Python Class括号中的参数用法介绍

    本文将对Python中类的括号中的参数进行详细解析,以帮助初学者熟悉和掌握类的创建以及参数设置。 一、Class的基本定义 在Python中,通过使用关键字class来定义类。类包…

    编程 2025-04-29
  • Shell脚本与Python脚本的区别

    本文将从多个方面对Shell脚本与Python脚本的区别做详细的阐述。 一、语法差异 Shell脚本和Python脚本的语法存在明显差异。 Shell脚本是一种基于字符命令行的语言…

    编程 2025-04-29

发表回复

登录后才能评论