Mil*_*den 12 shell scripting bash quoting escape-characters
我有一个脚本,将 scp 的文件从远程主机传回本地。有时文件名包含空格。scp 不喜欢其文件名中的空格。出于某种原因,我处理空格的尝试没有产生正确的 scp 路径。
代码:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/Users/Me/Desktop
Run Code Online (Sandbox Code Playgroud)
结果是
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Run Code Online (Sandbox Code Playgroud)
将 PATH 括在引号中"$PATH"会产生相同的错误。
为转义空间交换空间也不起作用,尽管据我所知它应该:
ESC_PATH=${PATH/' '/'\ '}
Run Code Online (Sandbox Code Playgroud)
尽管打印转义路径表明编辑有效:
echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg
Run Code Online (Sandbox Code Playgroud)
Mat*_*teo 20
您应该同时引用声明和用法
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" Me@10.1.10.33:/Users/Me/Desktop
Run Code Online (Sandbox Code Playgroud)
如果不引用$path第一部分,将只包含第一部分。如果不引用第二个,scp会将每个空格分隔的部分视为一个参数。
(我已更改$PATH为$path因为$PATH是一个重要的保留变量,您不得将其用于一般目的。)
| 归档时间: |
|
| 查看次数: |
27077 次 |
| 最近记录: |