将带有空格+通配符的变量传递给远程ssh

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将带有空格+通配符的变量传递给远程ssh相关的知识,希望对你有一定的参考价值。

我试图将带有空格的变量传递给ssh。

report_name="This is a sample report"
dir=/home/sample

ssh $remote_host "ls -t "$dir/$report_name"*.xlsx | head -1"

输出:

ls: is: No such file or directory
ls: a: No such file or directory
ls: sample: No such file or directory
ls: report*.xlsx: No such file or directory

如何使这项工作?

编辑:

答案:经过多次试验和错误,我使用下面的工作。

ssh $remote_host "ls -t "$dir"/'"$report_name"'.xlsx | head -1"
答案

这是一个不涉及转义空白区域的示例:

#!/bin/bash
report_name="This is a sample report"
dir=/tmp

echo "First file:"
ssh $remote_host "ls -t '$dir/$report_name'*.xlsx | head -1"
echo "All files:"
ssh $remote_host "ls -t '$dir/$report_name'*.xlsx"

外部双引号基本上是逃避内部单引号。这导致它们进入远程shell。这是我的输出:

First file:
/tmp/This is a sample report_4.xlsx
All files:
/tmp/This is a sample report_4.xlsx
/tmp/This is a sample report_2.xlsx
/tmp/This is a sample report_3.xlsx
/tmp/This is a sample report_1.xlsx

以上是关于将带有空格+通配符的变量传递给远程ssh的主要内容,如果未能解决你的问题,请参考以下文章

SSH 从本地文件运行命令并传递本地环境变量

Android - 将搜索传递给片段

Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法

将变量传递给 Windows SSH 服务器

将变量传递给现代中继中的片段容器

在 Django 模板中错误地传递带有空格的字符串