Bash
在腳本中,cd 工作目錄或前綴路徑更好嗎
如果我有一個應該在指定目錄中執行工作的腳本,最好用這個目錄為所有路徑添加前綴,或者將這個麻煩保存
cd
到工作目錄中。例如WORK_DIR="$1" process data >"$WORK_DIR/result.txt" grep "Error" "$WORK_DIR/result.txt"
或者
WORK_DIR="$1" cd "$WORK_DIR" process data >result.txt grep "Error" result.txt
我知道如果我使用 執行此腳本會有所不同
source
,但是是否有首選/方便的方法來執行此操作?
首選方法是使用前綴,我可以想到幾個原因:
- 它更易於閱讀和維護。
$WORK_DIR
在腳本中使用 grep for 比在此之前搜尋最後一個更容易cd
,尤其是當腳本很長並且您在腳本中執行cd
多次時。- 在您的具體範例中,如果有人決定編輯腳本並在“程序”和“grep”之間添加幾行,他可能會
cd
到不同的目錄,在這種情況下,該grep
行將失敗。如果您使用前綴,則中間發生的事情無關緊要。- 如果在腳本執行期間有人刪除並重新創建
$WORK_DIR
,您的腳本將位於已刪除目錄中。如果您使用前綴,即使目錄被刪除並重新創建,您也會寫入新目錄。