zoukankan      html  css  js  c++  java
  • 理解Bash shell中shift命令

    1. man下的解释:

    [root@desktop31 log]# man shift

    ...

           shift [n]
                  The  positional  parameters  from n+1 ... are renamed to $1 ....
                  Parameters represented by the numbers  $#  down  to  $#-n+1  are
                  unset.   n  must  be a non-negative number less than or equal to
                  $#.  If n is 0, no parameters are changed.  If n is  not  given,
                  it  is assumed to be 1.  If n is greater than $#, the positional
                  parameters are not changed.  The return status is  greater  than
                  zero if n is greater than $# or less than zero; otherwise 0.

    ...

    shift n表示把第n+1个参数移到第1个参数, 即命令结束后$1的值等于$n+1的值, 而命令执行前的前面n个参数不能被再次引用, 后面$#-n+1到$#的参数被unset, 参数的个数减少为$#-n个.

    n的值不能为负数, 若n为0或大于参数个数$#则参数不变, 若n没有给定则默认为1. 当n小于0或者大于参数个数$#时shift命令的返回值大于0, 否则返回0.

    2. 小例子

    [root@desktop31 log]# vim test

    #!/bin/bash
    echo '>> before shift '
    echo 'para count is ' $#
    echo '$1 2 3 is ' $1, $2, $3.
    shift 2
    echo '>> after shift 2'
    echo 'para count is ' $#
    echo '$1 2 3 is ' $1, $2, $3.


    [root@desktop31 log]# ./test a b c
    >> before shift 
    para count is  3
    $1 2 3 is  a, b, c.
    >> after shift 2
    para count is  1
    $1 2 3 is  c, , .
    [root@desktop31 log]# 

  • 相关阅读:
    DEBUG_PRINT
    FFMpeg的解码流程
    解决Cannot open the disk 'E:\my Ubuntu\Ubuntu000001.vmdk' or one of the snapshot disks it depends on.(虚拟机突然断电之后)
    关于mov.c的demuxer
    dts
    fprintf
    H264学习(1)
    如何安装不能识别的驱动错误代码为10
    mplayer先播视频后播音频的解决方法
    团队作业(二) IS191x
  • 原文地址:https://www.cnblogs.com/tingtwang/p/9199182.html
Copyright © 2011-2022 走看看