2014-01-28 169 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"获取变量。