gpt4 book ai didi

linux - 如何在 shell 脚本中的函数内打印变量值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:59 26 4
gpt4 key购买 nike

下面是我的脚本,其中我根据情况将值放入 local_server 变量中:

#!/bin/bash
servers=(machine981.abc.host.com luck123.pqr.host.com gond654.def.host.com)
case $(hostname -f) in
*abc.host.com)
local_server=("${servers[0]}")
;;
*pqr.host.com)
local_server=("${servers[1]}")
;;
*def.host.com)
local_server=("${servers[2]}")
;;
*) echo "unknown host: $(hostname -f), exiting." && exit 1 ;;
# ?
esac

# now this print works fine and it shows right value
echo $local_server

hello() {
el=$1
we=$2
# but this print inside "hello" function doesn't print anything? Why?
echo $local_server
}
export -f hello

parallel -j 3 hello {} $primary ::: ${pk[@]} &
parallel -j 3 hello {} $secondary ::: ${sk[@]} &

现在我有一个函数 hello(),我想在其中使用 local_server 变量,但看起来我不能使用它?它打印为空。这背后的原因是什么?如何在 hello 函数中打印 local_server 变量?

最佳答案

您有两个选择。导出变量:

export local_server

或使用 env_parallel:

env_parallel -j 3 hello {} $primary ::: ${pk[@]} &

(env_parallel 甚至复制数组、函数和别名 - 与您在 UNIX 中习惯的相反)。

关于linux - 如何在 shell 脚本中的函数内打印变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com