Процедура сдвига корпуса - что это?

В оболочке у нас есть сдвиг команды, но я видел в каком-то примере его передачу shift 3

Почему после смены номера? и о чем это? что он делает?

Пример:

echo "arg1= $1  arg2=$2 arg3=$3"
shift
echo "arg1= $1  arg2=$2 arg3=$3"
shift   
echo "arg1= $1  arg2=$2 arg3=$3"
shift  
echo "arg1= $1  arg2=$2 arg3=$3"
shift

Выход будет:

arg1= 1 arg2=2  arg3=3 
arg1= 2 arg2=3  arg3= 
arg1= 3 arg2=   arg3=
arg1=   arg2=   arg3=

Но когда я добавляю это, он не отображает его правильно.

Ответы

Ответ 1

Взгляните на страницу man, в которой говорится:

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

Пример script:

#!/bin/bash
echo "Input: [email protected]"
shift 3
echo "After shift: [email protected]"

Запустите его:

$ myscript.sh one two three four five six

Input: one two three four five six
After shift: four five six

Это показывает, что после сдвига на 3, $1=four, $2=five и $3=six.

Ответ 2

вы используете man bash, чтобы найти встроенную команду shift:

shift [n]

Позиционные параметры из n + 1... переименованы в $1.... Параметры, представленные числами $# до $# - n + 1, равны снята с охраны. n должно быть неотрицательным числом, меньшим или равным $#. Если n равно 0, параметры не изменяются. Если n не задано, предполагается, что 1. Если n больше, чем $#, то позиционный параметры не изменяются. Статус возврата больше, чем ноль, если n больше, чем $# или меньше нуля; иначе 0.

Ответ 3

На это можно ответить, просто прочитав Bash manual или набрав man shift:

      shift [n]

Сдвиньте позиционные параметры влево на n. Позиционный параметры из n + 1... $# переименовываются в $1... $# - n. параметры представленные цифрами $# to $# - n + 1, не заданы. n должно быть неотрицательное число, меньшее или равное $#. Если n равно нулю или больше чем $#, позиционные параметры не изменяются. Если n не, предполагается, что он равен 1. Возвращаемое состояние равно нулю, если n не является больше, чем $# или меньше нуля, в противном случае ненулевое.

Ответ 4

Сдвиньте позиционные параметры влево на n. Позиционные параметры от n + 1... $# переименовываются в $1... $# - n. Параметры, представленные числами $# to $# - n + 1, не заданы. n должно быть неотрицательным числом, меньшим или равным $#. Если n равно нулю или больше $#, то позиционные параметры не изменяются. Если n не поставляется, предполагается, что оно равно 1. Возвращаемое состояние равно нулю, если n больше, чем $# или меньше нуля, в противном случае - ненулевое значение.

  • Элемент списка