Jawaban:
Ada sintaks khusus untuk ini:
for i do
printf '%s\n' "$i"
done
Secara umum, daftar parameter skrip atau fungsi saat ini tersedia melalui variabel khusus $@
.
for i in "$@"; do
printf '%s\n' "$i"
done
Perhatikan bahwa Anda memerlukan tanda kutip ganda di sekitar $@
, jika tidak, parameter mengalami ekspansi wildcard dan pemisahan bidang. "$@"
adalah sihir: meskipun ada tanda kutip ganda, ia mengembang menjadi bidang sebanyak ada parameter.
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
Anda harus mengutip $@
karena ada kemungkinan argumen mengandung spasi (atau baris baru, dll.) Jika Anda mengutipnya, atau menghindarinya dengan a \
. Sebagai contoh:
./myscript one 'two three'
Itu dua argumen daripada tiga, karena kutipan. Jika Anda tidak mengutip $@
, argumen itu akan dipecah dalam skrip.
for f; do ...