Risposte:
C'è una sintassi speciale per questo:
for i do
printf '%s\n' "$i"
done
Più in generale, l'elenco dei parametri dello script o della funzione corrente è disponibile tramite la variabile speciale $@
.
for i in "$@"; do
printf '%s\n' "$i"
done
Si noti che sono necessarie le doppie virgolette $@
, altrimenti i parametri subiscono espansione con caratteri jolly e divisione dei campi. "$@"
è magico: nonostante le doppie virgolette, si espande in tanti campi quanti sono i parametri.
print_arguments () {
for i in "$@"; do printf '%s\n' "$i"; done
}
print_arguments 'hello world' '*' 'special !\characters' '-n' # prints 4 lines
print_arguments '' # prints one empty line
print_arguments # prints nothing
#! /usr/bin/env bash
for f in "$@"; do
echo "$f"
done
Dovresti citare $@
perché è possibile che gli argomenti contengano spazi (o newline, ecc.) Se li citi o li elimini con a \
. Per esempio:
./myscript one 'two three'
Sono due argomenti anziché tre, a causa delle virgolette. Se non citate $@
, tali argomenti verranno suddivisi all'interno dello script.
for f; do ...