如何在shell腳本中比較兩個檔案路徑

如何在shell腳本中比較兩個檔案路徑

我試圖將我的工作目錄與腳本需要運行的正確目錄進行比較。這是 shell 腳本的片段

CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
    echo "You are running script from correct directory"
fi

在這種情況下,我確保我位於 /proj/project_a/scripts_shell (作為我目前的工作目錄),但由於某種原因,它無法在 if 語句中檢測到這一點。因此它不會列印訊息。

這有什麼問題嗎?

答案1

嘗試這個:

if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
    echo "You are running the script from the correct directory" 
fi

問題是,當您這樣做時CURR_DIR=echo pwd,shell 會pwd在環境變數CURR_DIR設為 的情況下進行呼叫echo。當您需要在變數中捕獲命令的輸出時,只需執行VAR=$(cmd).

答案2

這是 BASH 中將命令結果保存到字串中的表示法

CURR_DIR=$(pwd)

或者

CURR_DIR=`pwd`

當您輸入時,只需CURR_DIR=echo pwd建立CURR_DIR一個“pwd”字串。這就是 echo 函數的工作原理。例如在 shell 中執行以下行

echo blah blah blah 

這與 blah 指令無關。

相關內容