码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 运维Shell牛刀小试(十一):for循环读取多个命令行参数



    运维Shell脚本小试牛刀(一)

    运维Shell脚本小试牛刀(二)

    运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解

    运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客

    Cenos7安装小火车程序动画

    运维Shell脚本小试牛刀(五):until循环

    运维Shell脚本小试牛刀(六): Shell中的函数认知

    运维Shell脚本小试牛刀(七):从函数文件中调用另外一个脚本文件中函数

    运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示

    运维Shell脚本牛刀小试(九): 重定向操作符“>“及双重定向“>>“

     运维Shell脚本小试牛刀(十)

    运维Shell牛刀小试(十一):for循环读取多个命令行参数

    运维Shell脚本小试牛刀(十二):awk编程尝鲜 


    一: for循环来接收命令行参数,进行分叉处理不同的逻辑 

    当有n个命令行参数数,处理使用shift命令读取命令行参数进行分叉处理外,通常还可以使用for循环与特殊参数$*|$@读取命令行参数进行相关的分支逻辑处理


    [root@www standandinout]# cat forreadparameter.sh 
    #!/bin/bash -
    #==================================================================================================================
    #
    #
    #                           FILE:  forreadparameter.sh
    #                           USAGE: ./forreadparameter.sh
    #    DESCRIPTION: for循环读取命令行参数
    #        OPTIONS: ------------------------------------------------------------------------------------------
    #        REQUIREMENTS: -------------------------------------------------------------------------------------
    # 
    #        BUGS: ---------------------------------------------------------------------------------------------
    #        NOTES: -------------------------------------------------------------------------------------------- 
    #        AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
    #    ORGANIZATION:
    #        CREATED: 2023-8-24 09:11:20    
    #        REVISION: ------------------------------------------------------------------------------------------
    #
    #
    #
    #
    #
    #====================================================================================================================
    # 定义变量E_quit_signal
    e_quit_signal=68

    #如果特殊变量的$1的值为空,则打印脚本的使用方法,并以退出状态码68退出脚本

    if [ ! -n $1 ]
    then
     

       # 打印脚本的使用方法到标准输出
       echo "Usage: `basename $0`  argument1 argument2 ........................................."

       # 退出脚本,退出状态码为68
       exit ${e_quit_signal}
    fi

    # 定义变量index
    index=1
    # 打印双引号中的内容到标准输出
    echo "Listing args with \$*:"

    # 使用for
    for arg in $*
    do

       # 打印输出变量index和arg的值及相应的内容到标准输出
       echo "Arg #$index = $arg......"

       # 将变量index的值加1
       let index+=1
    done
    echo
     # 重新将变量的值赋值为1
    index=1

    #打印双引号中的内容到标准输出
    echo "Listing args with \"\$@\":"

    # 使用for循环遍历特殊变量$@的值
    for arg in "$@"
    do

      # 打印输出变量index和arg的值及相应内容到标准输出 
      echo "Arg #$index = $arg"
      #将变量index的值加1
      let index+=1
    done
     

    二: 脚本测试 



    [root@www standandinout]# ./forreadparameter.sh one two three four five six seven eight night ten
    Listing args with $*:
    Arg #1 = one......
    Arg #2 = two......
    Arg #3 = three......
    Arg #4 = four......
    Arg #5 = five......
    Arg #6 = six......
    Arg #7 = seven......
    Arg #8 = eight......
    Arg #9 = night......
    Arg #10 = ten......

    Listing args with "$@":
    Arg #1 = one
    Arg #2 = two
    Arg #3 = three
    Arg #4 = four
    Arg #5 = five
    Arg #6 = six
    Arg #7 = seven
    Arg #8 = eight
    Arg #9 = night
    Arg #10 = ten
     


    三: read命令重定向读取文本文件的内容


    [root@www standandinout]# cat readtwolines.sh 
    #!/bin/bash -
    #==================================================================================================================
    #
    #
    #                           FILE:  readtwolines.sh
    #                           USAGE: ./readtwolines.sh
    #    DESCRIPTION: 从文件输入,从文件中重定向读取文件的内容 
    #        OPTIONS: -------
    #        REQUIREMENTS: ---------
    # 
    #        BUGS: ------
    #        NOTES: -------- 
    #        AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
    #    ORGANIZATION:
    #        CREATED: 2023-8-24 09:11:20    
    #        REVISION: --------
    #
    #
    #
    #
    #
    #====================================================================================================================
    # 如果参数的数量不为一个,则执行if结构中的语句块
    if [ $# -ne 1 ];then
        #打印脚本文件的使用方法
        echo "Usage: $0 FILEPATH"

        # 退出
        exit
    fi

    # 定义一个变量file,并将脚本命令行第一个参数赋值给file
    file=$1

    # 定义一段代码块
    {
      # 读取文件的一行内容,并将读取的内容存入变量line1中
      read line1
      # 读取文件的一行内容,并将读取的内容存入变量line2中
      read line2

      # 将代码块的标准输入执行file代表的文件,代码块读取的数据源来自文件file
    } < $file

      # 打印变量file的值和一些信息
      echo " First line in ${file} is : "
      # 打印读取到的内容
      echo "$line1"
      
      # 打印变量file的值和一些信息
      echo " Sencond line in ${file} is : "
      # 打印读取到的内容
      echo "$line2"

    # 退出脚本,且退出状态码为0
      exit 0
     
     


    四: 测试代码块读取文件的内容

    [root@www standandinout]# cat data.db 
    Shell 重定向从标准的键盘指向从标准的文件读取数据
    read命令从标准的文件一次只能读取一行命令,测试重定向是否成功
    Shell默认从标准的输入设备键盘读取输入数据源

    [root@www standandinout]# ./readtwolines.sh ./data.db 
     First line in ./data.db is : 
    Shell 重定向从标准的键盘指向从标准的文件读取数据
     Sencond line in ./data.db is : 
    read命令从标准的文件一次只能读取一行命令,测试重定向是否成功
     

  • 相关阅读:
    Ansible 指定受控端使用Python的版本
    使用免费开源的Odoo CRM如何有效的获取潜在客户线索的经验分享
    【23种设计模式】享元模式【⭐】
    解锁数据库运维秘籍:掌握AntDB-T动态共享内存,提升进程间通信效率
    传输层 拥塞控制-慢开始和拥塞避免 快重传 快恢复
    windbg使用教程
    Springboot整合Redisson解决超卖问题【分布式锁】
    程序人生:从小公司到一线大厂,薪资翻倍,我做到了...
    Harbor(V2.8+) 登录时报错 net/http: TLS handshake timeout
    使用https接口,无法调通接口响应不安全
  • 原文地址:https://blog.csdn.net/u014635374/article/details/132899802
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号