在 script.sh 中,
source a.sh
source b.sh
CMD1
CMD2
CMD3
Run Code Online (Sandbox Code Playgroud)
如何source *.sh用它们的内容替换(不执行命令)?我想看看 bash 解释器在获取文件并扩展所有变量后执行什么。
我知道我可以使用set -n -v或运行bash -n -v script.sh 2>output.sh,但这不会替换源命令(如果 a.sh 或 b.sh 包含变量,则更少)。
我想过使用子shell,但这仍然没有扩展源代码行。我在源代码行之前和之后尝试了set +n +v和的组合set -n -v,但这仍然不起作用。
我将使用 ssh 将该输出发送到远程机器。我可以使用<<output.sh管道将内容传输到 ssh 命令中,但我无法以 root 身份登录到远程计算机,但我是 sudoer。因此,我想我可以创建脚本并将其作为 base64 编码的字符串发送(使用那个聪明的技巧)
base64 script | ssh remotehost 'base64 -d | sudo bash'
有解决办法吗?或者你有更好的主意吗?