rusty使用简单的bash脚本

rusty使用简单的bash脚本,bash,substitution,file-rename,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:替换错误 感谢您的帮助。您是sh,不理解bash的参数替

我用的是非常旧的内存,我看不出下面的脚本片段有什么问题。我将问题隔离到此部分>>

#!/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:替换错误


感谢您的帮助。

您是
sh
,不理解bash的参数替换。使用
bash
即放置
#/bin/bash
作为您的shebang行。

您的脚本中有几个小问题:

  • 无需解析
    ls
    的输出
  • 波浪号
    ~
    不会在双引号内展开
  • 字符串的替换未使用正确的模式
  • 使用错误的shebang,即
    sh
    而不是
    bash
  • 请改用此脚本:

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

    哪一条是15号线?发布的代码看起来不错。也许,您没有使用bash和其他shell,或者顶部有错误的shebang?你有
    #吗/bin/bash
    作为第一行?所讨论的行是最后一行之前的行。是的,文件以#开头/垃圾箱/shubuntu@ip-17:~/sandbox$ls-l/bin/sh lrwxrwx 1 root root 2014年2月19日4日/bin/sh->dash您正在使用的
    sh
    。使用bash,即put
    #/bin/bash
    作为您的第一行。感谢您的快速回复。我按照你说的更正了脚本,但第15行仍然出现相同的错误..erorr::ubuntu@ip-71:~/sandbox$./makeRepeater.sh/home/ubuntu/sandbox/inputVids/VID-20150504-WA0003.mp4./makeRepeater.sh:15:./makeRepeater.sh:替换错误一定是因为$x是/home/ubuntu/sandbox/inputVids/VID-20150505004-WA0003.mp4?我的意思是,这不只是VID-20150504-WA0003.mp4ok,但我想重命名的不仅仅是文件名,还有将其移动到outputVids文件夹的路径。。不过这也行,谢谢。解决了,谢谢。这很明显。我在这里用非常古老的记忆工作。哇,我突然觉得自己老了。是的,已经9年了!