bashでは、for
ループ制御変数i
が指定された整数を反復するループを書くことができることを知っています。たとえば、1〜10の整数を出力するbashシェルスクリプトを作成できます。
#!/bin/bash
for i in {1..10}
do
echo $i
done
文字列のリストを提供する場合、文字列であるループ制御変数を代わりに反復することは可能ですか?たとえばfname
、ファイル名を表す文字列があるとします。ファイル名ごとに一連のコマンドを呼び出します。たとえばfname
、次のようなコマンドを使用した内容を印刷したい場合があります。
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
言い換えると、最初の反復でfname
は値fname="a.txt"
を持ち、2番目の反復でfname
は値を持つ、というfname="b.txt"
ようになります。残念ながら、上記の構文はまったく正しくないようです。出力を取得したい:
a.txt
b.txt
c.txt
しかし、上記のコードを試すと、次の出力が得られます。
{a.txt、
b.txt、
c.txt}
変数の値/内容を繰り返し変更できるように、正しい構文を決定するのを手伝ってもらえますfname
か?お時間をいただきありがとうございます。
手段@Mat削除
—
マナトワーク
{}
および,
秒。別の方法は、スペースを削除することです。"a.txt" "b.txt" "c.txt"
またはのいずれか{"a.txt","b.txt","c.txt"}
です。しかし、{a..c}.txt
代わりに私は好む。
{}
、あなたは(スペース区切り)リストをループには何も必要ありません