首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从txt文件循环?

从txt文件循环?
EN

Stack Overflow用户
提问于 2021-12-29 23:12:02
回答 1查看 110关注 0票数 0

我试着制作一个脚本来组织我已经拥有的一对列表,并使用其他程序进行处理,但是我现在有点卡住了。

我希望从Txt中的列表中处理每一行,首先创建一个文件夹到列表中的每一行,然后由于我有不同的脚本而进行处理。

但我的问题是,我给脚本的列表就像3-4元素工作得很好,并创建了自己的目录,但是如果我将一个包含+1000行的列表放在其中,那么我的脚本只通过脚本处理几个元素。

编辑:这个过程类似于30-35个脚本,不同语言的python,bash,python和golang。

有什么建议吗?

代码语言:javascript
复制
cat $STORES+NEW.txt | while read NEWSTORES 
do
    cd $STORES && mkdir $NEWSTORES && cd $NEWSTORES && mkdir .Files
    python3 checkstatus.py -n $NEWSTORES
    checkemployes $NEWSTORES -status
    storemanagers -s $NEWSTORES -o $NEWSTORES+managers.txt
    curl -s https://redacted.com/store?=$NEWSTORES | grep -vE "<|^[\*]*[\.]*$NEWSTORES" | sort -u | awk 'NF' > $NEWSTORES+site.txt
     ..
     ..
     ..
     ..
     ..
     ..
    cd ../..
done
EN

回答 1

Stack Overflow用户

发布于 2021-12-30 04:37:05

我现在还不应该给出答案,但我错误地回答了我应该回答的问题。总之,在这里我可以提出几点建议:

避免不必要地使用cat.

  • 使用另一个FD打开输入文件,以防止在循环中读取输入的命令吃下输入:IFS= read -ru 3 NEWSTORES; do ...; done 3< "$STORES+NEW.txt"{ IFS= read -ru "$FD" NEWSTORES; do ...; done; } {FD}< "$STORES+NEW.txt"。还请参见https://stackoverflow.com/a/28837793/445221.

  • 并不完全相关,但不要在管道中使用will循环,因为它将在子subshell中执行。将来,如果您试图修改一个变量并期望它保存在循环之外,它就不会了。您可以使用lastpipe来避免它,但大多数情况下这是不必要的。

  • 将变量展开放在双引号周围,以防止不必要的单词拆分和文件名展开。

  • 使用-r选项,除非您希望反斜杠转义字符.

  • 在读取前指定IFS=,以防止前导和尾随空格的剥离。

使用readarray -t ALL_STORES_DATA < "$STORES+NEW.txt"; for NEWSTORES IN "${ALL_STORES_DATA[@]}"; do ...; donemapfile

  • 使其更加方便:

当您不以全局方式使用变量时,

  • 在变量上使用小写字符,以避免与bash的变量发生冲突。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70525955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档