forループオブジェクトに対するBASH操作

forループオブジェクトに対するBASH操作

forloopオブジェクトに対してbashコマンドを実行しようとしていますが、forloopオブジェクトを使用する代わりにファイルを見つけようとします。

例:

入力ファイルには、次の形式の行が含まれています。user:password

for item in $(cat myItems);do
        USER = cat $item | cut -d ":" -f1
        PASS = cat $item | cut -d ":" -f2
done

結果は$ itemファイルが見つからないことです。

私も試しました

for item in $(cat myItems);do
        USER = $(cat $item | cut -d ":" -f1)
        PASS = $(cat $item | cut -d ":" -f2)
done

ベストアンサー1

ファイルの各行に対していくつかのコマンドを実行する必要がある場合は、次のように書くことができます。

while IFS=: read -r user password rest_ignored; do
  something with "$user" and "$password"
done < myItems

catvar=valueは、割り当て構文の周囲にスペースを入れずにファイルをリンクするコマンドです=$(...)改行でコマンド出力を分割することは可能ですが、正しく設定して$IFSワイルドカードを無効にした場合にのみ可能です。

おすすめ記事