2012-06-13 158 views
0

我正試圖編寫一個腳本,在OSX Lion登錄時重命名一個文件。bash腳本mv命令不起作用

這是到目前爲止我的腳本:

​​

我創建了一個LoginHook執行該腳本。我知道它會在登錄時執行,因爲計算機會在發現「ksadmin」文件時發出提示。我知道它會找到「ksadmin」文件,因爲計算機顯示「成功」。我也手動重命名了文件,退出登錄,並且計算機顯示「不成功」。

問題是腳本沒有將「ksadmin」重命名爲「ksadmin1」。我寫過正確的命令嗎?

任何想法都會很棒。

摩根

+0

您可以添加,在mv命令的結束,部分如下:'2>&1> 1/tmp/mverror',然後檢查它是否在抱怨什麼。也許甚至用-v運行mv,所以你可以確定它實際上是執行的 – Miquel

+0

謝謝,我會嘗試它 – MorganR

+0

@Miquel我試着做這兩個命令,但兩者似乎什麼都不做。在/ tmp /目錄中沒有創建文件,也沒有任何提醒我該文件已被移動。 – MorganR

回答

0

什麼是對ksadmin的權限?如果僅讀取您的登錄ID並且ksadmin1已經存在,那麼您可能需要mv -f。 另外,您可能需要將「〜」擴展到絕對路徑。不知道什麼時候你的腳本被執行,但是bash可能還沒有擴展它。

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