Bash 从文件中读取行时,只读取第一行
我正在尝试从文件中读取行,并基于该文件运行一些命令。但是,只读取文件的第一行,不执行其他操作。没有显示任何错误消息,似乎do while循环忽略了后续行 文件的内容是文件路径。我能够以另一种方式让它工作,但它给了我太多的“垃圾”数据,结果运行时间更长 示例内容:Bash 从文件中读取行时,只读取第一行,bash,github,do-while,Bash,Github,Do While,我正在尝试从文件中读取行,并基于该文件运行一些命令。但是,只读取文件的第一行,不执行其他操作。没有显示任何错误消息,似乎do while循环忽略了后续行 文件的内容是文件路径。我能够以另一种方式让它工作,但它给了我太多的“垃圾”数据,结果运行时间更长 示例内容: Users/username/rest/of/the/file/path/ Users/username/rest/of/the/file/path/ Users/username/rest/of/the/file/path
Users/username/rest/of/the/file/path/
Users/username/rest/of/the/file/path/
Users/username/rest/of/the/file/path/
以下是有问题的循环:
githubRepoList='githubcomparerepo.txt'
echo Start First Tag Check
while read l; do
cd ~
echo $l >> ~/testcsvtag1.txt
cd $l
pwd
find $l -type f -name "*.csv" >> ~/testcsvtag1.txt
printf "\n" >> ~/testcsvtag1.txt
done < $githubRepoList
githubRepoList='githubcomparerepo.txt'
回波开始第一次标签检查
读l时;做
光盘~
echo$l>>~/testcsvtag1.txt
cd$l
pwd
查找$l-type f-name“*.csv”>>~/testcsvtag1.txt
printf“\n”>>~/testcsvtag1.txt
已完成<$GitHubReportList
工作的循环如下所示:
find / -name "l10n" >> l10n.txt
cat l10n.txt | grep github > l10n1.txt
filename='l10n1.txt'
echo Start
while read l; do
cd ~
echo $l >> ~/testcsvtag1.txt
cd $l
pwd
find $l -type f -name "*.csv" >> ~/testcsvtag1.txt
printf "\n" >> ~/testcsvtag1.txt
done < $filename
find/-name“l10n”>>l10n.txt
cat l10n.txt | grep github>l10n1.txt
filename='l10n1.txt'
回声启动
读l时;做
光盘~
echo$l>>~/testcsvtag1.txt
cd$l
pwd
查找$l-type f-name“*.csv”>>~/testcsvtag1.txt
printf“\n”>>~/testcsvtag1.txt
完成<$filename
循环的一些内容只是在我编写这个脚本时监视它的位置并进行错误检查,例如
cd~
和pwd
命令 循环运行后,~/testcsvtag1.txt
的内容是什么?可能githubcomparerepo.txt
有\r(也称为^M)个字符(DOS文件)。尝试使用命令替换在没有临时文件的情况下删除它们:<代码>完成<@删除在第一个文件路径中找到的csv文件。它正确地写入了第一个,但似乎忽略了第二个。尝试在循环中使用read-r
,您可以在此处了解它:read-r解决了问题。我还通过在末尾添加一行新行来测试该文件,这似乎也解决了这个问题。谢谢@chepner和John kw在循环运行后,~/testcsvtag1.txt
的内容是什么?也许githubcomparerepo.txt
有\r(也称为^M)个字符(DOS文件)。尝试使用命令替换在没有临时文件的情况下删除它们:<代码>完成<@删除在第一个文件路径中找到的csv文件。它正确地写入了第一个,但似乎忽略了第二个。尝试在循环中使用read-r
,您可以在此处了解它:read-r解决了问题。我还通过在末尾添加一行新行来测试该文件,这似乎也解决了这个问题。谢谢你@chepner和John K