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

如何在Bash中向Python脚本传递两个变量?问题及解决方案

问题:SLURM数组任务中无法向Python脚本传递文件名

尝试将SLURM_ARRAY_TASK_ID(数组索引)和文件名传递给Python脚本,但文件名始终传递失败。原Bash脚本如下:

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=Test.txt
#SBATCH --array=0-1

for Folder in ~/users/**/**/T*A*
do
    File= basename ${Folder}
    python test.py ${SLURM_ARRAY_TASK_ID} ${File}
done
解决方案

修正后的脚本如下,通过正确的命令替换获取文件名,并为变量添加引号避免特殊字符问题:

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=Test.txt
#SBATCH --array=0-1

for Folder in ~/users/**/**/T*A*
do
    File=$(basename "${Folder}")
    python test.py "${SLURM_ARRAY_TASK_ID}" "${File}"
done

关键修正点

  • 修复命令替换语法:原脚本中File= basename ${Folder}未正确使用命令替换,需用$()包裹basename命令,才能将命令输出赋值给File变量;同时给${Folder}添加双引号,避免路径包含空格、特殊字符时被Shell错误解析。
  • 变量引用添加引号:调用Python脚本时,给${SLURM_ARRAY_TASK_ID}和${File}都加上双引号,确保变量内容(尤其是文件名)包含空格或特殊字符时,能作为完整参数传递给Python脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:03:18