• 《Advanced Bash-scripting Guide》学习(十一):shift的用法


    本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅

    Example 4-7 使用shift

    #!/bin/bash
    #使用shift来通过所有的位置参数
    until [ -z "$1" ]
    do
       echo -n "$1"
       shift
    done
    
    exit 0
    


    脚本运行结果

    关于shift

    1.shift命令用于对参数的左移,通常在不知道参数个数的情况下依次遍历每个参数进行相应处理。

    2.示例1:依次读取输入的参数并打印参数的个数

    run.sh

    #!/bin/bash
    while [ $# != 0 ]
    do
       echo "第一个参数为: $1,参数个数为: $#"
       shift
    done
    

    输入如下命令运行:run.sh a b c d e f

    结果显示如下:

    第一个参数为:a,参数个数为:6
    第一个参数为:b,参数个数为:5
    第一个参数为:c,参数个数为:4
    第一个参数为:d,参数个数为:3
    第一个参数为:e,参数个数为:2
    第一个参数为:f,参数个数为:1

    从上可知 shift(shift 1)命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。
    同理,shift n后,前n位参数都会被销毁。

    输入5个参数: abcde
    那么$1=a,$2=b,$3=c,$4=d,$5=e,执行shift 3操作后,前3个参数a、b、c被销毁,就剩下了2个参数:d,e(这时d=$1,e=$2,其中d由$4—>$1,e由$5—>$2),参考示例如下:
    示例2:

     #!/bin/bash  
        echo "参数个数为:$#,其中:"  
        for i in $(seq 1 $#)  
        do  
          eval j=$$i  
          echo "第$i个参数($"$i"):$j"  
        done  
          
        shift 3  
          
        echo "执行shift 3操作后:"  
        echo "参数个数为:$#,其中:"  
        for i in $(seq 1 $#)  
        do  
          #通过eval把i变量的值($i)作为变量j的名字  
          eval j=$$i  
          echo "第$i个参数($"$i"):$j"  
        done  

    输出结果为:

    参数个数为:5,其中:
    第1个参数($1):a
    第2个参数($2):b
    第3个参数($3):c
    第4个参数($4):d
    第5个参数($5):e
    执行shift 3操作后:
    参数个数为:2,其中:
    第1个参数($1):d
    第2个参数($2):e

    示例来源:http://blog.csdn.net/zhu_xun/article/details/24796235

    参考文章:http://blog.csdn.net/zhu_xun/article/details/24796235

                     http://blog.csdn.net/damotiansheng/article/details/39735441

  • 相关阅读:
    JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上。
    JavaScript 是脚本语言
    java String去除两端的空格和空字符
    response.sendRedirect 的功能是地址重定向(页面跳转)
    Java中“|”和“||”用法的区别
    如何居中div?
    DIV居中的几种方法
    table 中的tr 行点击 变换颜色背景
    Html-浅谈如何正确给table加边框
    背景图以拉伸方式(不重复)填充背景
  • 原文地址:https://www.cnblogs.com/my_captain/p/7147646.html
Copyright © 2020-2023  润新知