生锈的简单 bash 脚本

rusty with simple bash scripts

我在这里的记忆非常陈旧,我只是看不出下面的一小段脚本有什么问题。我将问题隔离到这部分 >>

#!/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: Bad substitution

感谢任何帮助,谢谢。

你是sh不明白bash的参数替换。使用 bash 即把 #!/bin/bash 作为你的 shebang 行。

您的脚本中存在一些小问题:

  1. 无需解析 ls 的输出
  2. 波浪号 ~ 未在双引号内扩展
  3. 字符串替换没有使用正确的模式
  4. 使用错误的 shebang 即 sh 而不是 bash

改为使用此脚本:

#!/bin/bash

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