Linux 如何使用ssh将远程服务器变量存储到本地服务器变量?
我正在制作一个bash脚本,如果远程服务器有特定的文件和特定的内容,该脚本就会退出。Linux 如何使用ssh将远程服务器变量存储到本地服务器变量?,linux,bash,shell,Linux,Bash,Shell,我正在制作一个bash脚本,如果远程服务器有特定的文件和特定的内容,该脚本就会退出。 我用下面的代码检查该文件: ssh $DEPLOY_HOST 'VAR=false if [ -f /filename ]; then . /filename REMOTEID=$ID if [ "$REMOTEID" == "something" ]; then VAR=true fi else echo "Missin
我用下面的代码检查该文件:
ssh $DEPLOY_HOST 'VAR=false
if [ -f /filename ]; then
. /filename
REMOTEID=$ID
if [ "$REMOTEID" == "something" ]; then
VAR=true
fi
else
echo "Missing /filename"
fi
if [ "$VAR" == false ]; then
exit 1
fi
'
但是这个exit命令对本地服务器不起作用,所以会执行后面的代码,这是我不期望的。我想我必须从远程服务器获取结果变量(VAR),以便本地服务器可以决定是否使用该变量退出。
我如何解决这个问题?
谢谢:)试试这个:
ssh $REMOTE 'test -e file' && exit
其中file
是远程服务器上要检查是否存在的文件的名称
远程服务器上的test
命令的退出代码将通过ssh
的退出代码传递到本地shell中,并与&
操作员一起使用
如果需要返回变量的字符串值,可以使用以下模式:
VAR=$(ssh $REMOTE '
{
some command
some other command
...
# all of the stdout from these commands will be discarded
} > /dev/null
echo $VAR # the stdout from here will be returned as stdout from ssh
')
让我们来分析一下:
块将要丢弃stdout的所有命令分组{}
单引号捕获要在远程服务器上运行的所有命令”
命令将从VAR=$(ssh'…')
获取stdout,并将其放置在名为echo$VAR
的局部变量中VAR