bash: rsync 转义单引号
bash: rsync escape single quote
我使用 rsync 从 files/directories 名称中包含 space 的服务器进行文件传输。使用单引号,我转义 space 并且这有效
rsync -svaz --progress 'root@192.168.1.2:/folder with space' '/downloads'
我正在尝试为此编写一个 bash 脚本,但没有成功,根据 this 线程,可以通过将单引号放在双引号下来转义单引号。下面看起来不错
#!/bin/bash
read -e -p "source path: " SOURCEPATH
read -e -p "destination path: " DESPATH
echo "rsync -svaz --progress" "'""$SOURCEPATH""'" "'""$DESPATH""'"
但是不行
#!/bin/bash
read -e -p "source path: " SOURCEPATH
read -e -p "destination path: " DESPATH
rsync -svaz --progress "'""$SOURCEPATH""'" "'""$DESPATH""'"
你夸大了。简单地引用参数扩展可确保将确切的值、空格和所有内容作为单个参数传递给 rsync
:
rsync -svaz --progress "$SOURCEPATH" "$DESPATH"
原始示例中的单引号未传递给 rsync
;在将封闭的字符串作为参数传递给 rsync
.
之前,它们被 shell 删除
要在 bash 中转义 space,您需要使用 \
它的反斜杠后跟 space。
如果您正在阅读来自其他来源的输入,那么只需输入引号(单引号或双引号)即可。
rsync -svaz --progress "$SOURCEPATH" "$DESPATH"
注意:如果您在读取输入时已经在 space 中使用了转义字符,那么您必须使用双引号。
我使用 rsync 从 files/directories 名称中包含 space 的服务器进行文件传输。使用单引号,我转义 space 并且这有效
rsync -svaz --progress 'root@192.168.1.2:/folder with space' '/downloads'
我正在尝试为此编写一个 bash 脚本,但没有成功,根据 this 线程,可以通过将单引号放在双引号下来转义单引号。下面看起来不错
#!/bin/bash
read -e -p "source path: " SOURCEPATH
read -e -p "destination path: " DESPATH
echo "rsync -svaz --progress" "'""$SOURCEPATH""'" "'""$DESPATH""'"
但是不行
#!/bin/bash
read -e -p "source path: " SOURCEPATH
read -e -p "destination path: " DESPATH
rsync -svaz --progress "'""$SOURCEPATH""'" "'""$DESPATH""'"
你夸大了。简单地引用参数扩展可确保将确切的值、空格和所有内容作为单个参数传递给 rsync
:
rsync -svaz --progress "$SOURCEPATH" "$DESPATH"
原始示例中的单引号未传递给 rsync
;在将封闭的字符串作为参数传递给 rsync
.
要在 bash 中转义 space,您需要使用 \
它的反斜杠后跟 space。
如果您正在阅读来自其他来源的输入,那么只需输入引号(单引号或双引号)即可。
rsync -svaz --progress "$SOURCEPATH" "$DESPATH"
注意:如果您在读取输入时已经在 space 中使用了转义字符,那么您必须使用双引号。