我試圖將我的工作目錄與腳本需要運行的正確目錄進行比較。這是 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 指令無關。