You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下遍历MotifsList.txt运行fimo的bash脚本报bad interpreter错如何解决

问题原因
  1. 报错zsh: ./file.sh: bad interpreter: /bin/bash^M: no such file or directory的直接原因:你的脚本使用了Windows格式的换行符(CRLF,\r\n),而MacOS/Linux系统默认识别Unix格式换行符(LF,\n),shebang行末尾多余的\r(即报错信息里的^M)导致系统无法匹配到正确的bash解释器路径。
  2. 脚本还存在3个逻辑问题:
  • 结果文件重定向用了>,每次循环都会覆盖之前的输出,最终只会保留最后一个Motif的运行结果
  • 你描述中提到的参考序列文件名为file.fa,但脚本里写的是genome.fa,会导致fimo找不到输入序列报错
  • $line变量没有加引号,Motif名称里如果有空格(比如示例中的MOTIF MA0151.1 Arid3a)会被shell拆分为多个参数,导致--motif传入值错误
解决步骤

1. 修复换行符问题

两种方案二选一即可:

  • 方法1:先通过Homebrew安装dos2unix工具:brew install dos2unix,再执行转换:dos2unix file.sh
  • 方法2:直接用sed命令替换换行符:sed -i '' 's/\r$//' file.sh(MacOS的sed需要额外加空的''参数)

2. 修复脚本逻辑错误

修改后的file.sh内容如下:

#!/bin/bash
# 启动循环前先清空结果文件,避免多次运行重复累加内容
> ResultFile
while IFS= read -r line || [[ -n $line ]]; do
    fimo --thresh 1e-4 --no-qvalue --max-stored-scores 10000000 --motif "$line" --text file.meme file.fa >> ResultFile
done < "$1"

改动说明:

  • 给$line和输入参数$1加了双引号,避免空格拆分参数
  • 把结果重定向符从>改为>>,追加写入所有Motif的运行结果
  • 把错误的输入序列文件名genome.fa改为实际的file.fa

3. 重新执行脚本

使用你原本的启动命令即可:

cd /Users/myho2345/Desktop/Motifs_analysis
chmod +x file.sh
./file.sh MotifsList.txt

内容的提问来源于stack exchange,提问作者Myke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:18:03