Shell shift procedure - What is this?

后端 未结 5 1787
天命终不由人
天命终不由人 2021-02-05 08:45

In shell we have the command shift, but i saw on some example its giving shift 3

Why there is a number after shift ? and what its about ? what it does ?

Example:

相关标签:
5条回答
  • 2021-02-05 08:53

    Take a look at the man page, which says:

    shift [n]
        The  positional parameters from n+1 ... are renamed to $1 .... 
        If n is not given, it is assumed to be 1.
    

    An Example script:

    #!/bin/bash
    echo "Input: $@"
    shift 3
    echo "After shift: $@"
    

    Run it:

    $ myscript.sh one two three four five six
    
    Input: one two three four five six
    After shift: four five six
    

    This shows that after shifting by 3, $1=four, $2=five and $3=six.

    0 讨论(0)
  • 2021-02-05 09:05

    Shift the positional parameters to the left by n. The positional parameters from n+1 ... $# are renamed to $1 ... $#-n. Parameters represented by the numbers $# to $#-n+1 are unset. n must be a non-negative number less than or equal to $#. If n is zero or greater than $#, the positional parameters are not changed. If n is not supplied, it is assumed to be 1. The return status is zero unless n is greater than $# or less than zero, non-zero otherwise.

    1. List item
    0 讨论(0)
  • 2021-02-05 09:09

    This would be answered simply by reading either the Bash manual, or typing man shift:

          shift [n]
    

    Shift the positional parameters to the left by n. The positional parameters from n+1 ... $# are renamed to $1 ... $#-n. Parameters represented by the numbers $# to $#-n+1 are unset. n must be a non-negative number less than or equal to $#. If n is zero or greater than $#, the positional parameters are not changed. If n is not supplied, it is assumed to be 1. The return status is zero unless n is greater than $# or less than zero, non-zero otherwise.

    0 讨论(0)
  • 2021-02-05 09:09

    shift treat command line arguments as a FIFO queue, it popleft element every time it's invoked.

    array = [a, b, c]
    shift equivalent to
    array.popleft
    [b, c]
    $1, $2,$3 can be interpreted as index of the array.
    

    bash - The advantage of shift over reassign value straightforward - Stack Overflow

    0 讨论(0)
  • 2021-02-05 09:12

    you use man bash to find the shift builtin command:

    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.

    0 讨论(0)
提交回复
热议问题