我正在创建一个远程变量,我想将其值分配给 unix 中的本地变量。这是代码#!/bin/bash
INPUT= "test"
ssh username@domain.com
"if [ -s $INPUT ];
then
date=\`date\`
remote= $INPUT.date
$INPUT= \$remote
else
mkdir $INPUT
fi"
Run Code Online (Sandbox Code Playgroud)
基本上我正在为局部变量赋值。通过 ssh 连接到远程服务器后,我正在检查是否存在名为“test”的非空目录。如果是,那么我将向 $INPUT 局部变量附加一个时间戳。代码在第 8 行“remote= $INPUT.date”之前工作正常。但将远程变量 \$remote 赋值给本地变量 $INPUT 却不会。我究竟做错了什么。谢谢您的帮助。
正如 Rup 所说,远程 shell 无法设置本地 shell 变量。您需要通过打印出来并使用命令替换来捕获远程变量。此 SSH 命令将执行您想要执行的操作,然后它将回显您要存储在 $INPUT 中的修改值:
INPUT="test"
ssh user@remotehost "if [ -s $INPUT ]; then
timestamp=\$(date)
echo "${INPUT}.\${timestamp}"
fi"
Run Code Online (Sandbox Code Playgroud)
输出:
test.Monday, 24 February 2014 11:26:41 GMT
Run Code Online (Sandbox Code Playgroud)
如果您希望更改 $INPUT,则需要使用整个 SSH 命令作为命令替换:
INPUT="test"
INPUT=$(ssh user@remotehost "if [ -s $INPUT ]; then
timestamp=\$(date)
echo "${INPUT}.\${timestamp}"
fi")
Run Code Online (Sandbox Code Playgroud)
输出:
$> echo $INPUT
test.Monday, 24 February 2014 11:27:47 GMT
Run Code Online (Sandbox Code Playgroud)
同样,如果您想将变量存储在 txt 文件中,这会将其存储在远程主机上:
ssh user@remotehost "echo \$remote > file.txt"
Run Code Online (Sandbox Code Playgroud)
这会将其存储在本地:
ssh user@remotehost "echo \$remote" > file.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2615 次 |
| 最近记录: |