生锈与简单的bash脚本

时间:2015-06-20 16:34:30

标签: bash substitution file-rename

我正在使用非常旧的内存,我只是看不出下面的一小段脚本有什么问题。我将问题分离到了这个部分>>

#!/bin/sh
for x in   `ls ~/sandbox/inputVids/*.mp4`
do
    echo $x;
    cp "$x" "~/sandbox/outputVids/${x/%.mp4/.silent.mp1}";
done

我一直收到消息

  

./ makeRepeater.sh:15:./makeRepeater.sh:错误替换

任何帮助表示感谢,谢谢。

2 个答案:

答案 0 :(得分:1)

你的剧本中很少出现故障:

  1. 无需解析ls的输出
  2. Tilde ~未在双引号内展开
  3. 替换字符串未使用正确的模式
  4. 使用错误的shebang,sh代替bash
  5. 请改用此脚本:

    #!/bin/bash
    
    cd ~/sandbox/inputVids/
    for x in *.mp4; do
        echo "$x";
        cp "$x" ~/sandbox/outputVids/"${x/.mp4/.silent.mp1}"
    done
    

答案 1 :(得分:0)

你是sh,它不了解bash的参数替换。使用bash即将#!/bin/bash作为您的shebang行。