• 理解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]# 

  • 相关阅读:
    APIO2007 动物园
    SCOI2010 股票交易
    USACO13NOV No Change G
    洛谷 P3694 邦邦的大合唱站队
    洛谷 P6196 3月月赛 ERR1 代价
    洛谷月赛 ERR1 代价
    Splay 学习笔记
    HNOI2009 梦幻布丁
    乘法逆元
    【洛谷】【二分答案+最短路】P1462 通往奥格瑞玛的道路
  • 原文地址:https://www.cnblogs.com/tingtwang/p/9199182.html
Copyright © 2020-2023  润新知