Linux 无法从bash脚本中使用空格SCP路径?
我有一个bash脚本,它生成要执行的SCP命令。代码的相关部分如下所示:Linux 无法从bash脚本中使用空格SCP路径?,linux,bash,shell,scp,Linux,Bash,Shell,Scp,我有一个bash脚本,它生成要执行的SCP命令。代码的相关部分如下所示: echo $COPY_CMD $COPY_CMD rascher@localhost:~/Desktop/video_final$ ./xfervids.sh scp "/media/My Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD" rascher@192.168.1.101:./video_working/ rasche
echo $COPY_CMD
$COPY_CMD
rascher@localhost:~/Desktop/video_final$ ./xfervids.sh
scp "/media/My Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD" rascher@192.168.1.101:./video_working/
rascher@192.168.1.101's password:
"/media/My: No such file or directory
Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD": No such file or directory
我的输出如下所示:
echo $COPY_CMD
$COPY_CMD
rascher@localhost:~/Desktop/video_final$ ./xfervids.sh
scp "/media/My Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD" rascher@192.168.1.101:./video_working/
rascher@192.168.1.101's password:
"/media/My: No such file or directory
Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD": No such file or directory
rascher@localhost:~/Desktop/video\u final$。/xservices.sh
scp“/media/My Book/PhotosVideos/Videos/2008年5月18日下载/SD_VIDEO/PRG001/MOV056.MOD”rascher@192.168.1.101:/视频工作/
rascher@192.168.1.101的密码:
“/media/My:没有这样的文件或目录
Book/PhotosVideos/Videos/2008年5月18日下载/SD_VIDEO/PRG001/MOV056.MOD”:没有这样的文件或目录
但是,当我获取输出的第2行:scp”/media/…
,将其复制并粘贴到终端中时,它就工作了
我做错了什么?我试着逃出“我的书”(
“我的书”
)中的空格,放入两个\
字符而不是一个(“我的书”
),但我无法使其行为一致。帮助?当路径名中有空格时,你必须非常小心
在上下文中,您可能需要:
eval $COPY_CMD
这次不需要在变量周围加引号。当路径名中有空格时,必须格外小心 在上下文中,您可能需要:
eval $COPY_CMD
这次您不需要在变量周围加引号。您应该了解如何以及为什么避免在变量中添加命令,以及eval
的安全含义
您可能希望以这种方式使用变量的一个原因是记录或显示脚本执行的操作。正如您所发现的,在能够正确引用或转义空格等方面会出现问题。一种方法是使用set-x
和set+x
在不同的点i打开和关闭这种类型的输出n您的脚本。您应该了解如何以及为什么避免将命令放入变量,以及eval
的安全含义
您可能希望以这种方式使用变量的一个原因是记录或显示脚本执行的操作。正如您所发现的,在能够正确引用或转义空格等方面会出现问题。一种方法是使用
set-x
和set+x
在不同的点i打开和关闭这种类型的输出n您的脚本。完全不知道eval
bash命令。谢谢!完全不知道eval
bash命令。谢谢!我的小家庭dvd刻录脚本可能写得太多了,但信息还是很好。我的小家庭dvd刻录脚本可能写得太多了,但信息还是很好。