Voglio ottenere il secondo ultimo elemento assegnato a un programma di shell. Attualmente lo faccio in questo modo:Come ottenere il penultimo argomento dallo script di 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
Sono sicuro che c'è un modo molto più semplice per farlo. Quindi, come posso ottenere il penultimo argomento da uno script di shell inserito nel minor numero possibile di righe?
Il primo non lo fa funziona in zsh, ma '$ {@ [- 2]} fa. –
La citazione in questa risposta è corretta per zsh, ma non corretta in qualsiasi shell compatibile con POSIX (come bash o ksh). –
Questo può essere fatto in Bourne senza eval - per esempio, spostando gli arg all'interno di una funzione: 'penultimate() {while [" $ # "-gt 2]; fare turno; fatto; printf '% s \ n' "$ 1"; }; penultimate "$ @" ' –