gpt4 book ai didi

linux - 如何将变量替换为 bash 脚本,然后在 Linux 中的远程服务器上运行

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:26 26 4
gpt4 key购买 nike

我可以像这样在远程服务器上运行本地 bash 脚本...

ssh user@server "/bin/bash -s" < script.sh

但我需要在我的本地服务器上获取一个“配置”文件,其中包含一个变量列表及其值(也许是 .env 文件?),并替换脚本中的那些,以便它们在执行时出现服务器。所以说我的脚本包含:

#!/bin/bash

echo "image directory: ${PWD}/${IMAGE_DIR}"; # use pwd of server but image_dir specified on local machine
echo "model name: ${MODEL_NAME}";
echo "model dimensions: ${IMAGE_DIMENSIONS}";
# ...do some work...
echo "goodbye from $HOSTNAME";

我的“配置”文件包含:

IMAGE_DIR=/path/to/images
MODEL_NAME=outputModel.h5
IMAGE_DIMENSIONS=(256 256 3)

是否有简单的 linux 命令可以在我的脚本在远程服务器上执行之前将这些变量值注入(inject)到我的脚本中? envsubst程序看起来可以提供帮助,但我不知道如何让 envsubst 从我的“配置”文件中“查看”变量?

我想尽可能使用简单的 Linux 命令,因为我最终想创建一个可以在 cron 作业中运行这些命令的 Docker 镜像。因此,对于每个“配置”文件,我将配置变量注入(inject)脚本并在远程服务器上调用它。

最佳答案

awk '
NR==FNR{
pos = index($0, "=");
val = substr($0, pos+1);
arr[$1]=val;
next;
}
{
for(key in arr){
gsub("\\${?"key"}?", arr[key], $0);
}
print
}
' FS='=' config FS='[ \t\n]+' script.sh

我写了一个小的 awk 脚本。我没有测试它,但它应该适合你。

关于linux - 如何将变量替换为 bash 脚本,然后在 Linux 中的远程服务器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57497148/

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