【问题标题】:Linux MV command failing from Script - using variablesLinux MV 命令从脚本失败 - 使用变量
【发布时间】:2016-06-20 07:44:08
【问题描述】:

我正在尝试从 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 在空格前添加转义字符。

提前谢谢:)

【问题讨论】:

    标签: bash shell terminal mv


    【解决方案1】:

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

    #!/bin/bash
    
    source=/path/to/file\ with\ space
    dest=/path/to/file\ with\ space2
    
    mv "$source" "$dest"
    

    【讨论】:

    • 如果你这样做然后删除'\'转义字符
    • 或者删除单引号......所以无论哪种方式,都有效。逃跑肯定更丑陋,也许更痛苦:)
    【解决方案2】:

    我只是将变量用引号括起来,而不是使用转义字符,所以:

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

    【讨论】:

      猜你喜欢
      • 2022-12-16
      • 2016-09-29
      • 1970-01-01
      • 2017-04-13
      • 2019-10-02
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多