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

技术求助:如何在Bash脚本中运行其他目录下的文件?

解决Bash脚本中运行其他目录文件的问题

首先,先修正你脚本开头的shebang错误——你写了#!/bin/#!/usr/bin/env bash,这会导致脚本无法正确解析,应该改成:

#!/usr/bin/env bash

接下来针对你要在循环中运行其他目录文件的需求,分两种常见情况说明:

情况1:运行其他目录下的脚本文件

假设你要运行的是Assignment3_submission目录下的generate_all_predictions.bash(和你的当前脚本同级),你可以用相对路径或者绝对路径来调用它:

用相对路径(推荐,只要脚本在同级目录就生效)

在你的# MUST RUN THE FUNCTION HERE位置替换成:

# 运行同级目录下的generate_all_predictions.bash
./generate_all_predictions.bash

用绝对路径(更稳妥,不受当前工作目录影响)

如果不确定脚本执行时的工作目录,直接用绝对路径更可靠:

# 绝对路径调用脚本
/root/Assignment3_submission/generate_all_predictions.bash

情况2:运行某个自定义函数

如果# MUST RUN THE FUNCTION HERE指的是调用一个自定义函数(而不是脚本文件),你需要先确保该函数已被加载:

  1. 如果函数定义在另一个脚本文件里,先通过source命令加载它:
    # 先加载包含目标函数的脚本
    source /root/Assignment3_submission/path/to/your_function_script.sh
    # 然后调用函数
    your_function_name
    
  2. 如果函数定义在当前脚本里,直接在对应位置写函数名即可。

修改后的完整脚本示例

这里结合你的需求,给出修正后的完整脚本(假设要运行同级的generate_all_predictions.bash):

#!/usr/bin/env bash
counter=0
while [ "$counter" -le 208 ]
do
    # 给变量加引号,避免潜在的空格问题(好习惯)
    mv "$counter.txt" /root/Assignment3_submission/query
    # 运行同级目录下的脚本
    ./generate_all_predictions.bash
    mv /root/Assignment3_submission/query/"$counter.txt" /root/Assignment3_submission/data
    ((counter++))
done

额外提示

  • 如果你要运行的脚本不在当前脚本的同级目录,只需要调整路径即可,比如要运行/root/other_dir/script.sh,直接写该绝对路径就行。
  • 确保你要运行的脚本有可执行权限,如果没有,先执行chmod +x /path/to/your_script.sh赋予权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:07:22