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]# 

  • 相关阅读:
    使用PowerDesigner 15对现有数据库进行生成图表结构
    dynamic的使用
    js 字符串的replace() 方法和实现replaceAll() 方法
    学习新属性 requestAnimationFrame
    Mapbox 地图样式规范
    Emmet插件使用方法总结
    js循环遍历性能
    lunix部署其前端项目常见报错
    componentWillMount和componentDidMount的区别
    控制浏览器禁止缓存
  • 原文地址:https://www.cnblogs.com/tingtwang/p/9199182.html
Copyright © 2011-2022 走看看