というファイルがあり、dependencies
その内容は次のとおりです。
blog
forms
geo
ticketing
build.sh
ループを繰り返す必要があるスクリプトがあります。このビルドスクリプトはDockerコンテナ内で実行されます。私はこのファイルの行を繰り返すいくつかの方法をテストしました。
#!/bin/bash
while IFS= read -r dep || [ -n "$dep" ]
do
echo $dep # empty
done < /path_to_dependencies
または
$( cat /path_to_dependencies ) |
while read dep;
do
echo $dep # empty
done
または
for dep in `cat /path_to_dependencies`
do
echo $dep # empty
done
または
while read dep;
do
echo $dep # empty
done <<< "$( cat /path_to_dependencies )"
この問題の原因は何ですか?私のUbuntuで問題なくファイルの内容を繰り返すことができます。
答え1
最初のコード例は私にとって効果的でした。私がコードを持っているときしなければならない動作しますが、動作しません。最も単純な形式で始まりました。
while read dep
do
echo "$dep"
done < ./dependencies
(dependencies
便宜上、ファイルは同じディレクトリから始まります。)あなたの例が出るまで追加の
エントリを追加しました。read
while IFS= read -r dep || [ -n "$dep" ]
do
echo "$dep"
done < ./dependencies
簡略化されたバージョンとこのバージョンの両方は、次の結果を提供します。
blog
forms
geo
ticketing
したがって、コードを最も簡単な形式に減らし、動作が停止する部分に達してから集中できるようになるまで、追加部分を一度に入力することをお勧めします。