无论我使用哪种循环技术,变量始终为空

无论我使用哪种循环技术,变量始终为空

我有一个名为的文件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

因此,我建议将代码简化为最简单的形式,并一次输入附加部分,直到到达使其停止工作的部分,然后您就可以专注于它。

相关内容