Відповіді:
Для цього є спеціальний синтаксис:
for i do
printf '%s\n' "$i"
done
Більш загально, список параметрів поточного сценарію або функції доступний через спеціальну змінну $@
.
for i in "$@"; do
printf '%s\n' "$i"
done
Зауважте, що вам потрібні подвійні лапки $@
, інакше параметри зазнають розширення підстановки та розбиття поля. "$@"
це магія: незважаючи на подвійні лапки, вона розширюється на стільки ж полів, скільки є параметрів.
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
Ви повинні цитувати, $@
тому що аргументи можуть містити пробіли (або нові рядки тощо), якщо ви цитуєте їх, або уникаєте їх з а \
. Наприклад:
./myscript one 'two three'
Це два аргументи, а не три, через цитати. Якщо ви не цитуєте $@
, ці аргументи будуть розбиті в сценарії.
for f; do ...