どのループ技術を使用しても、変数は常に空です。

どのループ技術を使用しても、変数は常に空です。

というファイルがあり、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

したがって、コードを最も簡単な形式に減らし、動作が停止する部分に達してから集中できるようになるまで、追加部分を一度に入力することをお勧めします。

関連情報