【问题标题】:How to Loop on a file.txt containing a list of names?如何循环包含名称列表的 file.txt?
【发布时间】:2021-10-24 16:28:28
【问题描述】:

我正在使用 MacOS

我正在尝试通过 fimo 工具对转录因子 Motifs 进行注释。 我需要在文件 MotifsList.txt 中包含的多个 Motifs --motif $line 名称上运行 fimo。 为了工作,fimo 需要访问 MotifsList.txt 旁边的另外 2 个文件(file.memefile.fa)。 我会使用生成的包含脚本的 file.sh命令行 运行所有内容。 所有需要的文件; .txt、.sh、.meme 和 .fa 存储在名为 Motifs_analysis 的同一文件夹中。 我希望将输出 Resultfile 保存在同一张 cd 中。

  1. MotifsList.txt 文件中的行:
MOTIF BU0001.Arid3a_primary
MOTIF MA0151.1 Arid3a
MOTIF MA0601.1 Arid3b
MOTIF ARNT_HUMAN.H11MO.0.B
....
  1. file.sh 包含脚本的文件:
#!/bin/bash
while IFS= read -r line || [[ -n $line ]]; do
    fimo --thresh 1e-4 --no-qvalue --max-stored-scores 10000000 --motif $line --text file.meme genome.fa > ResultFile
done < $1
  1. 命令行输入以启动 bash 作业:
cd /Users/myho2345/Desktop/Motifs_analysis
chmod +x file.sh
./file.sh MotifsList.txt

*错误:

zsh: ./file.sh: bad interpreter: /bin/bash^M: no such file or directory

脚本不正确。我哪里做错了?

最好,非常感谢您的帮助!!!!

【问题讨论】:

  • 您好,欢迎来到 SO。 “使用 bash,找不到 file.sh”:你检查它的存在了吗(ls /Users/myho2345/Desktop/Motifs_analysis/file.sh)?
  • @Myke - 找不到文件.sh 不是真正的错误信息,可以吗?
  • @RenaudPacalet 是的,它在文件夹中,并且脚本中名称的每个字母都相同。
  • @Myke 所以,请不要重新措辞,而是准确地复制粘贴错误消息。每个细节都很重要。
  • 尝试使用dos2unix 删除脚本中的 windows 行尾。

标签: bash list loops command-line


【解决方案1】:

^M 是 DOS 文件系统中的回车符,它是“不可见的”。

2 个修复选项:

# Option 1
dos2unix file.sh

# Option 2
sed -i 's/\r//g' file.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2014-01-11
    • 2014-01-13
    相关资源
    最近更新 更多