我想在ssh会话中做这样的事情:
脚本
ssh remoteservername "
col=`sed -n "8p" /tmp/temp.txt`
echo $col>>/tmp/Ankur.txt
"
这不起作用,它打印空行而不是文本我想要存储在col变量中,为什么这样,这是有效的:
ssh remoteservername "
sed -n "8p" /tmp/temp.txt>>/tmp/Ankur.txt
"
这个Ankur.txt文件位于远程服务器上....主要关注的是如何在变量中获取命令的输出,以便我可以进一步使用它。
请告诉我们如何使其发挥作用。
由于
答案 0 :(得分:0)
当您使用双引号时,变量名称将在传递之前展开,因此$col
在远程服务器上运行之前将在本地进行扩展。您可以转义$
\$col
或使用单引号,这可能更好,因为您也想在命令中使用双引号
ssh remoteservername '
col=`sed -n "8p" /tmp/temp.txt`
echo $col>>/tmp/Ankur.txt
'
不改变引号
ssh remoteservername 'sed -n "8p" /tmp/temp.txt >> /tmp/Ankur.txt'
正如您所指出的那样,仍然有效,可以将输出直接重定向到文件中。这避免了上面双引号的可变扩展问题。
如果您将要执行许多步骤,您可能只想在remoteservername
上创建一个脚本并在ssh
命令中调用该脚本,而不是在同一命令行上执行大量操作。
答案 1 :(得分:0)
您可以使用本地文件执行复杂命令,并通过SSH在远程计算机中使用变量,如下所示。
<强> 1。创建输入文件&#39; input_file.txt&#39;
#-- input_file.txt col=`sed -n "8p" /tmp/temp.txt` echo $col>>/tmp/Ankur.txt
<强> 2。通过SSH
执行远程服务器中输入文件的命令
ssh remoteservername "sh -s" < input_file.txt