linux - script - Procedimiento de cambio de shell-¿Qué es esto?
scripts bash ejemplos (5)
En shell tenemos el comando shift, pero vi en algún ejemplo su cambio de dar 3
¿Por qué hay un número después del turno? y de que se trata Que hace ?
Ejemplo:
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 salida será:
arg1= 1 arg2=2 arg3=3
arg1= 2 arg2=3 arg3=
arg1= 3 arg2= arg3=
arg1= arg2= arg3=
Pero cuando agrego eso, no se muestra correctamente.
Desplazar los parámetros posicionales hacia la izquierda con n. Los parámetros posicionales de n + 1 ... $ # cambian de nombre a $ 1 ... $ # - n. Los parámetros representados por los números $ # a $ # - n + 1 no están establecidos. n debe ser un número no negativo menor o igual que $ #. Si n es cero o mayor que $ #, los parámetros posicionales no se cambian. Si no se proporciona n, se supone que es 1. El estado de retorno es cero a menos que n sea mayor que $ # o menor que cero, de lo contrario, es distinto de cero.
- Elemento de lista
Echa un vistazo a la página del man , que dice:
shift [n]
The positional parameters from n+1 ... are renamed to $1 ....
If n is not given, it is assumed to be 1.
Un ejemplo de script:
#!/bin/bash
echo "Input: $@"
shift 3
echo "After shift: $@"
Ejecutarlo:
$ myscript.sh one two three four five six
Input: one two three four five six
After shift: four five six
Esto muestra que después de cambiar por 3, $1=four
, $2=five
y $3=six
.
Esto se respondería simplemente leyendo el manual de Bash o escribiendo man shift
:
shift [n]
Desplazar los parámetros posicionales hacia la izquierda con n. Los parámetros posicionales de n + 1 ... $ # cambian de nombre a $ 1 ... $ # - n. Los parámetros representados por los números $ # a $ # - n + 1 no están establecidos. n debe ser un número no negativo menor o igual que $ #. Si n es cero o mayor que $ #, los parámetros posicionales no se cambian. Si no se proporciona n, se supone que es 1. El estado de retorno es cero a menos que n sea mayor que $ # o menor que cero, de lo contrario, es distinto de cero.
usa man bash
para encontrar el comando shift
builtin:
cambio [n]
Los parámetros posicionales de n + 1 ... se renombran a $ 1 ... Los parámetros representados por los números $ # abajo a $ # - n + 1 no están establecidos. n debe ser un número no negativo menor o igual que $ #. Si n es 0, no se cambian los parámetros. Si no se da n, se supone que es 1. Si n es mayor que $ #, los parámetros posicionales no se cambian. El estado de retorno es mayor que cero si n es mayor que $ # o menor que cero; de lo contrario 0.
shift
argumentos de la línea de comando de shift
tratan como una cola FIFO, se llena de elementos cada vez que se invoca.
array = [a, b, c]
shift equivalent to
array.popleft
[b, c]
$1, $2,$3 can be interpreted as index of the array.
bash - La ventaja de cambiar sobre el valor de reasignación directamente - Desbordamiento de pila