Linux MV命令从脚本失败 - 使用变量

时间:2016-03-06 20:34:58

标签: bash shell terminal mv

我正在尝试从bash脚本中移动文件,

我将源和目标保存到变量:

source='/Users/usr/Downloads/Drop/test\ movie.m4v'
dest='/Users/usr/Downloads/Movies/test\ movie.m4v'

我正在跑步:

mv $source $dest

我得到了输出:

usage: mv [-f | -i | -n] [-v] source target
   mv [-f | -i | -n] [-v] source ... directory

我做错了什么!?

我正在移动的文件在其路径中可能包含也可能不包含空格。我正在使用sed在空格之前添加转义字符。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

有很多方法可以处理包含空格的文件名,一个快速的解决方案可能是将mv命令中的变量包装在引号中:

#!/bin/bash

source=/path/to/file\ with\ space
dest=/path/to/file\ with\ space2

mv "$source" "$dest"

答案 1 :(得分:0)

而不是使用转义字符,我只是将我的变量包装在引号中,所以:

source='/Users/usr/Downloads/Drop/test movie.m4v'
dest='/Users/usr/Downloads/Movies/test movie.m4v'

mv "$source" "$dest"