以下是我的脚本,其中我根据条件将值放在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
变量,但看起来我不能使用它?它打印为空。这背后的原因是什么?如何在local_server
函数中打印hello
变量?
答案 0 :(得分:0)
您有两种选择。导出变量:
export local_server
或使用env_parallel:
env_parallel -j 3 hello {} $primary ::: ${pk[@]} &
(env_parallel复制偶数数组,函数和别名 - 与您在UNIX中习惯的相反)。