gpt4 book ai didi

bash - 如何在 bash 脚本中使用远程命令结果分配局部变量?

转载 作者:行者123 更新时间:2023-11-29 09:02:48 24 4
gpt4 key购买 nike

我正在编写一个脚本来恢复一组服务器上的主从复制。迷失在 bash 语法中,试图将远程运行的命令替换为本地值的结果分配给本地变量:

function doRemote() {
ssh s1.domain.com <<ENDSSH
mysql -u root -pXXX --execute="DROP DATABASE db; CREATE DATABASE db;"
mysql -u root -pXXX --database=db < $WORKDIR$FILENAME
sudo rm -rf /var/log/mysql/db-bin.*
mysql -u root -pXXX --execute="FLUSH LOGS;"
CURRENT_LOG=`mysql -u root -pXXX --execute="SHOW MASTER STATUS" -AN | awk '{print $1}'`
CURRENT_POS=`mysql -u root -pXXX --execute="SHOW MASTER STATUS" -AN | awk '{print $2}'`
# ...
ENDSSH
}

分配 CURRENT_* 变量的两行是问题所在:mysql -u... 命令在本地执行,而不是远程 session 。

请建议如何远程运行它,将远程 mysql 命令的结果分配给局部变量。

最佳答案

尝试转义 ENDSSH 如下所示,以便在远程主机上进行变量评估:

ssh s1.domain.com <<\ENDSSH
# ...
ENDSSH

关于bash - 如何在 bash 脚本中使用远程命令结果分配局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143535/

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