我有一个名为的文件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
因此,我建议将代码简化为最简单的形式,并一次输入附加部分,直到到达使其停止工作的部分,然后您就可以专注于它。