Quiero obtener el segundo último elemento dado a un programa de shell. Actualmente lo hago así:¿Cómo obtener el segundo último argumento del script de shell?
file1_tmp="${@: -2}"
oldIFS=$IFS
IFS=" "
count=0
for value in $file1; do
if [[ count -e 0 ]]; then
file1=$value
fi
count=1
done
oldIFS=$IFS
Estoy seguro de que hay una manera mucho más fácil de hacer esto. Entonces, ¿cómo puedo obtener el segundo último argumento de una entrada de script de shell en la menor cantidad de líneas posible?
El primero no lo hace trabajar en zsh, pero '$ {@ [- 2]}' sí. –
La cita en esta respuesta es correcta para zsh, pero incorrecta en cualquier shell que cumpla POSIX (como bash o ksh). –
Esto se puede hacer en Bourne sin eval, por ejemplo, cambiando args dentro de una función: 'penultimate() {while [" $ # "-gt 2]; hacer cambio; hecho; printf '% s \ n' "$ 1"; }; penultimate "$ @" ' –