我试图将一个包含空格的变量传递给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"
外部双引号实质上转义了内部单引号。这导致它们进入远程外壳。这是我的输出:
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