2015-06-20 60 views
1

我正在使用非常古老的內存,我只是無法看到腳本的以下小片段出了什麼問題。我孤立的問題,這部分>>用簡單的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:壞替代

任何幫助表示感謝。

+1

哪一行是15行?代碼發佈看起來很好。也許,你沒有使用bash和其他shell,或者在頂部有錯誤的shebang?第一行是否有'#!/ bin/bash'? –

+0

有問題的行是前一行。是的,該文件以#!/ bin/sh – Slabo

+0

ubuntu @ ip-17開頭:〜/ sandbox $ ls -l/bin/sh lrwxrwxrwx 1 root root 4 Feb 19 2014/bin/sh - >破折號 – Slabo

回答

1

一些小問題在你的腳本:

  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 
+0

感謝您的快速回復。我按照你的說法改正了腳本,但是我仍然在第15行得到同樣的錯誤.. – Slabo

+0

erorr :: ubuntu @ ip-71:〜/ sandbox $ ./makeRepeater.sh /home/ubuntu/sandbox/inputVids /VID-20150504-WA0003.mp4 ./makeRepeater.sh:15:./makeRepeater.sh:錯誤替代 – Slabo

+0

必須是因爲$ x是/home/ubuntu/sandbox/inputVids/VID-20150504-WA0003.mp4?我的意思是,而不是隻是VID-20150504-WA0003.mp4 – Slabo

0

你是sh它不理解bash的參數替換。使用bash即將#!/bin/bash作爲您的shebang線。