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代わりに私は好む。
{}、あなたは(スペース区切り)リストをループには何も必要ありません