文字列を関数に渡すだけです:
function my_function
{
while test $# -gt 0
do
echo "do something with $1"
shift
done
}
my_string="cat
dog
bird"
my_function $my_string
あなたに与えます:
do something with cat
do something with dog
do something with bird
そして、他の空白が引数の区切り文字として使用されることに本当に関心がある場合は、最初に IFS
を設定します :
IFS="
"
my_string="cat and kittens
dog
bird"
my_function $my_string
取得する:
do something with cat and kittens
do something with dog
do something with bird
unset IFS
を忘れないでください
これを使用します (ファイル file
から各行を読み取るループです) )
cat file | while read -r a; do echo $a; done
どこで echo $a
現在の行で何をしたいかです。
更新:コメンテーターから (ありがとう!)
複数行のファイルはなく、複数行の変数がある場合は、
を使用しますecho "$variable" | while read -r a; do echo $a; done
UPDATE2:"read -r
" バックスラッシュを無効にすることをお勧めします (\
) 文字の解釈 (mtraceur のコメントを確認してください。ほとんどのシェルでサポートされています)。これは POSIX 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html で文書化されています
デフォルトでは、-r オプションが指定されていない限り、<backslash>
です。 エスケープ文字として機能します。 .. 次のオプションがサポートされています:-r
- <backslash>
を扱わない 任意の特別な方法で文字。それぞれが入力行の一部であると考えてください。