在bash脚本中重命名文件会破坏脚本

时间:2014-01-28 20:25:47

标签: bash

美好的一天!我有以下脚本应该重命名,然后将我Mac上的文件夹中的文件发送到FTP服务器。

for f in "$@"
    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行知道它是什么?提前谢谢!

2 个答案:

答案 0 :(得分:5)

您已准确地解决了问题。第一个mv重命名文件。原始名称"$f"不再存在。试试这个:

for f in "$@"
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

答案 1 :(得分:3)

您可以将新名称存储在另一个变量中,然后在想要访问该文件时使用该名称。

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

然后使用"$newname"获取变量。