不明な数のパラメータを使用してbashスクリプトを作成したいと思います。
これらの主張をどのように理解し、これについて何かをすることができますか?
間違った試みは次のとおりです。
#!/bin/bash
for i in $args; do
echo $i
done
ベストアンサー1
特別な構文があります:
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