我試圖通過使用代碼的臨時文件切換兩個文件的內容;交換shell中的兩個文件
#!/bin/bash
...
mv $FILE1 $TEMP
mv $FILE2 $FILE1
mv $TEMP $FILE2
當我運行它,它返回每個行號
swap.sh:第18行:MV:找不到命令提前
感謝。
我試圖通過使用代碼的臨時文件切換兩個文件的內容;交換shell中的兩個文件
#!/bin/bash
...
mv $FILE1 $TEMP
mv $FILE2 $FILE1
mv $TEMP $FILE2
當我運行它,它返回每個行號
swap.sh:第18行:MV:找不到命令提前
感謝。
也許你正在使用shell參數取消設置PATH變量。
嘗試增加完整路徑命令,例如
/bin/mv ...
使用命令,你可以弄清楚什麼是正確的路徑:
which mv
或者你可以嘗試在腳本的開頭設置PATH ,例如:
PATH =/bin:/ usr/bin:/ sbin:/ usr/sbin
這是依賴於系統的。您可以通過在您的shell中運行
echo $PATH
來查看默認路徑。
用/ usr/bin/getconf可以更好地調查系統的默認PATH PATH`。其他一切可能會給你一個或多或少的隨機目錄列表:-) – Jens 2012-05-16 15:05:24
的POSIXy方式與一條合適的路徑來初始化腳本是
PATH=$(/usr/bin/getconf PATH)
通過一些隨機的傢伙誰擁有安裝外殼的第一個命令invokation之前將這個,你應該設置和保護,驚喜用他的PATH應該看起來像什麼的想法的配置文件。
如果您需要其他目錄中的程序,例如,您可能需要擴充。
PATH=$(/usr/bin/getconf PATH):/usr/local/bin
你沒有從`cron`運行這個腳本,對嗎? Cron沒有設置任何PATH,所以你必須在腳本中設置它,最好使用`PATH = $(/ usr/bin/getconf PATH)` – Jens 2012-05-16 15:09:34