このサンプルをフォーマットすることは可能ですか?
for i in string1 string2 stringN
do
echo $i
done
これに似たものに:
for i in
string1
string2
stringN
do
echo $i
done
編集:混乱を招いて申し訳ありませんが、スクリプトを実行するさまざまな方法があることに気付きませんでした-sh <scriptname>
対 bash <scriptname>
と、今は名前を付けられないこのこと-#!/bin/sh
および#!/bin/bash
:)
Bashで配列を使用すると、読みやすくなります。この配列構文では、単語間に任意の空白を使用できます。
strings=(
string1
string2
"string with spaces"
stringN
)
for i in "${strings[@]}"; do
echo "$i"
done
バックスラッシュで改行をエスケープできます:
$ for i in \
> hello \
> world
> do
> echo $i
> done
hello
world
$
ループする各項目の前後で改行をエスケープできます。
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[@]}"
zsh
への切り替えがオプションの場合:
for string (
string1
'other string'
etc..
) printf '%s\n' "$string"
同じこと、少ないテキスト:
array=(
string{1..7}
)
for i in "${array[@]}"; do
echo "$i"
done
次のように、loop
コマンドを使用できます here :
$ loop "echo $ITEM" --for string1,string2,string3
または、ファイルとしてリストがある場合:
$ cat file_list.txt | loop "echo $ITEM"
list='a b c d'
for element in $list;do
echo "$element"
done