2014-01-28 118 views
0

美好的一天!我有以下腳本應該重命名,然後將文件夾中的文件發送到FTP服務器。在bash腳本中重命名文件打破腳本

for f in "[email protected]" 
    do 
     mv "$f" "${f%.mpeg}.mpg" 
     curl -T "$f" ftp://1.2.3.4/Vol123456-01/MPEG/ --user me:secret 
     mv "$f" "/Users/me/Sent Stuff" 
    done 

這工作正常,除了第一個mv線。該腳本已成功重命名該文件,但後來的命令似乎無法再找到"$f"。我對bash腳本非常陌生。有沒有辦法刷新或許"$f"意味着這樣curlmv行知道它是什麼?提前致謝!

回答

5

你已經完全確定了問題。第一個mv重命名文件。原名"$f"已不存在。試試這個:

for f in "[email protected]" 
do 
    g="${f%.mpeg}.mpg" 
    mv "$f" "$g" 
    curl -T "$g" ftp://1.2.3.4/Vol123456-01/MPEG/ --user me:secret 
    mv "$g" "/Users/me/Sent Stuff" 
done 
+0

這樣做!謝謝! – mrcoulson

3

您可以將新名稱存儲在另一個變量中,然後在想要到達該文件時使用該名稱。

newname="${f%.mpeg}.mpg" 

然後使用"$newname"獲取變量。