【发布时间】:2020-11-02 16:13:55
【问题描述】:
我正在使用以下内容:
filename="Test File 17-07-2020.xls"
sshpass -p $password ssh root@$IP /bin/bash -s "$filename" << 'EOF'
echo $1
EOF
这在文件名等于 Testfile.xls 并且 echo 输出完整文件名时有效。
但是如果文件名被称为Test File 17-07-2020.xls则失败
我的理解是空格会破坏输入,所以它变成:
$1 = Test
$2 = File
$3 = 17-07-2020.xls
有没有办法通过这个保留空格并将其全部保存在$1
如果我在 SSHPASS 命令之前添加filename=$(echo "$filename" | sed 's/ /\\ /g'),它确实有效。
这是一种有效的方法还是有更好的方法?
谢谢
【问题讨论】:
-
echo "$1" 显示 'Test' 不是全名。
-
在不需要第二个参数的情况下,您可以使用
"$*"代替$1,但它不是一个非常强大的解决方案。