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

Bash函数调用传入变量名输出变量名而非值,如何正确传递变量值?

Bash函数传参输出变量名而非值的解决方法

问题原因

你调用myfunc ts时,传给函数的是字符串"ts",不是变量ts的实际值,所以函数内的$1接收的就是这个字符串,自然输出"ts"。

解决方案一:直接传递变量值

调用函数时,用$ts替代ts,这样就会把变量的内容作为参数传入:

#!/usr/bin/sh

myfunc() {
    local ts=$1
    echo $ts
}

ts=`date +%s`
echo $ts

# 这里用$ts传递变量值
myfunc $ts

运行后就能输出变量的实际值,和第一个echo结果一致。

解决方案二:传递变量名并间接引用(适合动态场景)

如果你的需求是传递变量名,然后在函数内部获取它的值,可以用Bash的间接引用语法${!变量名}:

#!/usr/bin/sh

myfunc() {
    # 接收变量名,通过间接引用获取值
    local var_name=$1
    local var_value=${!var_name}
    echo $var_value
}

ts=`date +%s`
echo $ts

# 传递变量名ts
myfunc ts

这种方式适合需要动态操作不同变量的场景,比如根据传入的变量名获取对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:18:19