2011-02-13 56 views
0

我試圖通過使用代碼的臨時文件切換兩個文件的內容;交換shell中的兩個文件

#!/bin/bash 

... 

mv $FILE1 $TEMP 
mv $FILE2 $FILE1 
mv $TEMP $FILE2 

當我運行它,它返回每個行號

swap.sh:第18行:MV:找不到命令提前

感謝。

+0

你沒有從`cron`運行這個腳本,對嗎? Cron沒有設置任何PATH,所以你必須在腳本中設置它,最好使用`PATH = $(/ usr/bin/getconf PATH)` – Jens 2012-05-16 15:09:34

回答

4

也許你正在使用shell參數取消設置PATH變量。

嘗試增加完整路徑命令,例如

/bin/mv ... 

使用命令,你可以弄清楚什麼是正確的路徑:

which mv 

或者你可以嘗試在腳本的開頭設置PATH ,例如:

PATH =/bin:/ usr/bin:/ sbin:/ usr/sbin

這是依賴於系統的。您可以通過在您的shell中運行

echo $PATH 

來查看默認路徑。

+0

用/ usr/bin/getconf可以更好地調查系統的默認PATH PATH`。其他一切可能會給你一個或多或少的隨機目錄列表:-) – Jens 2012-05-16 15:05:24

0

的POSIXy方式與一條合適的路徑來初始化腳本是

PATH=$(/usr/bin/getconf PATH) 

通過一些隨機的傢伙誰擁有安裝外殼的第一個命令invokation之前將這個,你應該設置保護,驚喜用他的PATH應該看起來像什麼的想法的配置文件。

如果您需要其他目錄中的程序,例如,您可能需要擴充

PATH=$(/usr/bin/getconf PATH):/usr/local/bin