Bash

在腳本中,cd 工作目錄或前綴路徑更好嗎

  • October 26, 2022

如果我有一個應該在指定目錄中執行工作的腳本,最好用這個目錄為所有路徑添加前綴,或者將這個麻煩保存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,但是是否有首選/方便的方法來執行此操作?

首選方法是使用前綴,我可以想到幾個原因:

  1. 它更易於閱讀和維護。$WORK_DIR在腳本中使用 grep for 比在此之前搜尋最後一個更容易cd,尤其是當腳本很長並且您在腳本中執行cd多次時。
  2. 在您的具體範例中,如果有人決定編輯腳本並在“程序”和“grep”之間添加幾行,他可能會cd到不同的目錄,在這種情況下,該grep行將失敗。如果您使用前綴,則中間發生的事情無關緊要。
  3. 如果在腳本執行期間有人刪除並重新創建$WORK_DIR,您的腳本將位於已刪除目錄中。如果您使用前綴,即使目錄被刪除並重新創建,您也會寫入新目錄。

引用自:https://unix.stackexchange.com/questions/722538