文字列のリストをループするbash

このサンプルをフォーマットすることは可能ですか?

for i in string1 string2 stringN
do
 echo $i
done

をこのような形にすることは可能ですか?

for i in 
string1
string2
stringN
do
 echo $i
done

EDIT: 混乱させて申し訳ありません。スクリプトの実行方法が、sh <scriptname>bash <scriptname> で異なることや、今はまだ名前をつけられませんが、#!/bin/sh#!/bin/bash があることに気がつきませんでした :)

ソリューション

bashで配列を使用すると、読みやすさが向上します。この配列構文では、単語の間に任意のホワイトスペースを入れることができます。

strings=(
    string1
    string2
    "string with spaces"
    stringN
)
for i in "${strings[@]}"; do
    echo "$i"
done
解説 (8)

改行はバックスラッシュでエスケープできます。

$ for i in \
> hello \
> world
> do
> echo $i
> done
hello
world
$
解説 (0)

ループする各項目の前後で改行をエスケープすることができます。

for i in \
    string1 \
    string2 \
    stringN
do
   printf '%s\n' "$i"
done

あるいは、この単純な例では

printf '%s\n' string1 string2 stringN

となり、同じ結果となります。

関連する

bash` の配列を使ったバリエーションです。

strings=(
    string1
    string2
    stringN
)

printf '%s\n' "${strings[@]}"
解説 (0)