gpt4 book ai didi

linux - 环境/全局变量不在 shell 脚本中展开

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:13 27 4
gpt4 key购买 nike

我正在尝试通过 SSH 执行一个函数。关注this post后我可以做到.

但如果我在 shell 脚本中有一些全局/环境变量,则这些变量不会展开。这是文件的源代码,SSH 节点不是一个选项,因为它就像一个本地副本。

我试过:

#!/bin/bash

SKS="TYPO"

fun2(){

arg=$1
echo $arg >> /tmp/a.o
echo $SKS >> /tmp/a.o
}

fun1() {

echo "SKSKSKSKS" > /tmp/a.o
fun2 "SPSP"

}

fun1

SSH="ssh -4q -o StrictHostKeyChecking=no -o ConnectTimeout=10"
$SSH <ssh-host> "$(typeset -f); fun1"

当我在本地节点上执行这个脚本时,它给我的输出是:

cat /tmp/a.o 
SKSKSKSKS
SPSP
TYPO

但在 SSHed 节点上:

SKSKSKSKS
SPSP

所以这里的$SKS没有在SSHed节点上展开。

请帮我解决这个问题。

问候,什里达尔

最佳答案

您没有将本地 $SKS 变量设置或导出到远程端。 typeset -f 扩展函数,因此您可以在远程端获得函数而不是变量。

如果您想要远程端可用的变量,您也需要在远程执行的 shell 脚本中分配它,或者以某种方式在本地端的函数中预先扩展它。

关于linux - 环境/全局变量不在 shell 脚本中展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29077314/

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