zoukankan      html  css  js  c++  java
  • Linux shell脚本中shift的用法说明【转】

    本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235

    Linux shell脚本中shift的用法说明

    shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。
     
    示例1:依次读取输入的参数并打印参数个数:
    run.sh:
    [java] view plain copy
     
    1. #!/bin/bash  
    2. while [ $# != 0 ];do  
    3. echo "第一个参数为:$1,参数个数为:$#"  
    4. shift  
    5. 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个参数: abcd e

    那么$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:

    [java] view plain copy
     
    1. #!/bin/bash  
    2. echo "参数个数为:$#,其中:"  
    3. for i in $(seq 1 $#)  
    4. do  
    5.   eval j=$$i  
    6.   echo "第$i个参数($"$i"):$j"  
    7. done  
    8.   
    9. shift 3  
    10.   
    11. echo "执行shift 3操作后:"  
    12. echo "参数个数为:$#,其中:"  
    13. for i in $(seq 1 $#)  
    14. do  
    15.   #通过eval把i变量的值($i)作为变量j的名字  
    16.   eval j=$$i  
    17.   echo "第$i个参数($"$i"):$j"  
    18. 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

  • 相关阅读:
    原生js实现Ajax的原理。
    js的双等号类型转换
    关于tween.js 封装的方法
    带你了解状态码
    css实现选项卡
    造粉神器使用说明
    云集-微信助手常见问题和注意事项(持续更新)
    400企业录音部分资料共计920份 下载
    我们只是虫子!我们真的是虫子吗?
    .Net码农学Android---快速了解数据存储
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7410701.html
Copyright © 2011-2022 走看看