bash脚本mv命令无法正常工作

时间:2012-06-13 09:41:08

标签: macos bash mv

我正在尝试编写一个在OSX Lion登录时重命名文件的脚本。

到目前为止,这是我的脚本:

#!/bin/bash
if [ -f /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ]; then
    mv ~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin1
    say "Successful"
else
    say "Unsuccessful"
fi

我创建了一个执行脚本的LoginHook。我知道它在登录时执行,因为计算机在找到“ksadmin”文件时说话。我知道它找到了“ksadmin”文件,因为计算机显示“成功”。我还手动重命名了文件,注销,重新登录,计算机显示“不成功”。

问题是脚本不会将“ksadmin”重命名为“ksadmin1”。我是否正确地写了命令?

任何想法都会很棒。

摩根

2 个答案:

答案 0 :(得分:0)

ksadmin的权限是什么?如果它只读取你的登录ID并且ksadmin1已经存在,那么你可能需要一个mv -f。 此外,您可能希望将“〜”扩展为绝对路径。不确定你的脚本何时被执行但是bash还不能扩展它。

答案 1 :(得分:0)

感谢cdarke,Miquel和mVChr的帮助。该问题的解决方案如下:

#!/bin/bash
if [ -f /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ]; then
    mv /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin1
    say "Successful"
else
    say "Unsuccessful"
fi

我用于部署的版本:

#!/bin/bash
    if [ -f /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ]; then
        mv /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin1
    fi