Dans Shell, nous avons le poste de commandement, mais j’ai vu un exemple qui donne le poste 3
Pourquoi il y a un numéro après le quart? et de quoi s'agit-il? ce qu'il fait ?
Exemple:
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
La sortie sera:
arg1= 1 arg2=2 arg3=3
arg1= 2 arg2=3 arg3=
arg1= 3 arg2= arg3=
arg1= arg2= arg3=
Mais quand j'ajoute cela, il ne l'affiche pas correctement.
Jetez un coup d’œil à la page man , qui dit:
shift [n]
The positional parameters from n+1 ... are renamed to $1 ....
If n is not given, it is assumed to be 1.
Un exemple de script:
#!/bin/bash
echo "Input: $@"
shift 3
echo "After shift: $@"
Exécuter:
$ myscript.sh one two three four five six
Input: one two three four five six
After shift: four five six
Cela montre qu'après décalage de 3, $1=four
, $2=five
et $3=six
.
vous utilisez man bash
pour trouver la commande intégrée shift
:
décalage [n]
Les paramètres de position de n + 1 ... sont renommés en $ 1 .... Les paramètres représentés par les nombres $ # jusqu'à $ # - n + 1 sont non réglé. n doit être un nombre non négatif inférieur ou égal à $ #. Si n est 0, aucun paramètre n'est modifié. Si n n'est pas donné, il est supposé être 1. Si n est supérieur à $ #, le positional les paramètres ne sont pas modifiés. Le statut de retour est supérieur à zéro si n est supérieur à $ # ou inférieur à zéro; sinon 0.
On y répondra simplement en lisant soit le Bash manual , soit en tapant man shift
:
shift [n]
Décalez les paramètres de position vers la gauche de n. Le positionnel les paramètres de n + 1 ... $ # sont renommés en $ 1 ... $ # - n. Paramètres représentés par les nombres $ # à $ # - n + 1 ne sont pas définis. n doit être un nombre non négatif inférieur ou égal à $ #. Si n est zéro ou supérieur que $ #, les paramètres de position ne sont pas modifiés. Si n n'est pas fourni, il est supposé être 1. L'état de retour est zéro sauf si n est supérieur à $ # ou inférieur à zéro, différent de zéro sinon.
Décalez les paramètres de position vers la gauche de n. Les paramètres de position de n + 1 ... $ # sont renommés en $ 1 ... $ # - n. Les paramètres représentés par les nombres $ # à $ # - n + 1 ne sont pas définis. n doit être un nombre non négatif inférieur ou égal à $ #. Si n est égal à zéro ou supérieur à $ #, les paramètres de position ne sont pas modifiés. Si n n'est pas fourni, il est supposé être 1. L'état de retour est zéro sauf si n est supérieur à $ # ou inférieur à zéro, différent de zéro sinon.
shift
traite les arguments de ligne de commande comme une file d'attente FIFO. L'élément popleft à chaque fois qu'il est appelé.
array = [a, b, c]
shift equivalent to
array.popleft
[b, c]
$1, $2,$3 can be interpreted as index of the array.
bash - L'avantage du décalage par rapport à la réaffectation de la valeur simple - Stack Overflow