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

如何在Bash脚本中向函数传递不同目录的文件路径参数?

解决Bash函数参数传递为空的问题

别急,问题其实很简单——你在函数里引用参数的方式不对!Bash 函数中,传入的第一个参数是用 $1 来引用的,而不是你自定义的 $arg(除非你自己把 $1 赋值给 $arg)。

修正后的代码

#!/bin/bash
myfile=/home/$USER/Desktop/Programs/Files/asd.bam
function mate() {
    # 用 $1 接收传入的第一个参数
    samtools index "$1"
    echo "$1"
}
# 调用函数时传入变量
mate "$myfile"

关键解释

  • Bash 函数的参数规则和脚本本身的参数规则一致:第一个参数是 $1,第二个是 $2,所有参数可以用 $@ 表示。
  • 给变量和参数加双引号 " 是个好习惯,能避免文件名包含空格等特殊字符时出现错误。
  • 如果非要用 $arg 这个变量名,也可以在函数开头加一句 arg="$1",之后再用 $arg 引用。

额外小提示

如果想确保函数被调用时确实传入了参数,可以在函数开头加个简单的检查:

function mate() {
    if [ -z "$1" ]; then
        echo "错误:请传入文件路径参数"
        return 1
    fi
    samtools index "$1"
    echo "$1"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:55