一、解决方案
先说解决方案:使用 dos2unix 工具将文件的换行符转换为 Unix 格式
sudo apt install dos2unix
dos2unix scripts/v1_5/eval/textvqa.sh
二、具体问题
再分析具体问题
在运行本地的一个sh文件时,出现无法找到命令的报错
bash scripts/v1_5/eval/textvqa.sh
scripts/v1_5/eval/textvqa.sh: 行 2: $‘\r’:未找到命令
usage: model_vqa_loader.py [-h] [–model-path MODEL_PATH]
[–model-base MODEL_BASE]…
model_vqa_loader.py: error: unrecognized arguments:
scripts/v1_5/eval/textvqa.sh: 行 4: --model-path:未找到命令
这个textvqa.sh
调用了model_vqa_loader.py
,并对model-path
的参数进行了设置。
- 在
textvqa.sh
中,前两行是这样的,发现正确设置的参数model-path
的值
python -m llava.eval.model_vqa_loader
–model-path liuhaotian/llava-v1.5-7b \
- 在
model_vqa_loader.py
中,传参的前即几行是这样的,确实需要model-path
这个参数
if name == “main”:
parser = argparse.ArgumentParser()
parser.add_argument(“–model-path”, type=str, default=“facebook/opt-350m”)
错误是因为脚本文件中存在 Windows 风格的换行符(CRLF),但我是在 Linux 环境下运行的,Linux 需要 Unix 风格的换行符(LF)。所以有了以上解决方案,运行完那两行代码后,就可以正常实现sh文件了
sudo apt install dos2unix
dos2unix scripts/v1_5/eval/textvqa.sh