基本上我想要做的是創建一個if條件來評估程序是否已經用特定參數啓動。從參數中獲取字符串的第一個字
基本上你的程序
./testprogram
或
./testprogram [-i EXCEPTION] DIR
我想要做的是,確定該計劃是否已經啓動與參數三種啓動選項。以下是啓動選項:
- 如果推出不帶參數,它會設置爲當前工作目錄
- 如果有異常啓動,如果用DIR推出將執行特定任務
- ,它將設置DIR作爲設定參數
所以我創建了以下功能
parse_arg(){
# when launched with no argument, fairly self explanatory
if [[ $# == '0' ]]; then
DIR="$PWD"
DIR=$DIR
fi
現在,這裏是棘手的部分,我需要弄清楚一種方式,來檢查第二段是否是異常或簡單的目錄,換句話說,我只是不能將它硬化爲我們已經啓動的大量參數。我試圖做的是創建一個參數來幫助我建立的,如果條件
I_DETECT="$1"
現在是什麼我不知道,如果,如何削減基本的話裏面的字符串,同時也保持空白控制。
只有我能想到的方法是基本回顯出來,然後使用剪切功能。問題是,我需要回聲它
我想這
I_DETECT=$(echo I_DETECT | awk '{print $1;})'
elif [[ $# == '1' && $I_DETECT != "-i" ]] then;
... #you get the point
問題是使用awk工具的性質,它最終還是打印出來到標準輸出,當所有我想要的是評估表達式if條件。
因此,任何想法更優雅的解決方案?
我有很多問題:(1)「DIR = $ DIR」的缺點是什麼? (2)你爲什麼想要削減'$ 1'中的單詞?一個正確的'testprogram'調用要麼有'$ 1 = -i'或'$ 1 = someDir'。 ''-i「'只有一個字,'someDir'可能不應該被分割。 (3)你想分裂的單詞是什麼:把所有的單詞放入一個數組中,只提取第* n個單詞,...? – Socowi
你在找'shift'嗎?另外,請閱讀[Bash FAQ/035](http://mywiki.wooledge.org/BashFAQ/035)和[ComplexOptionParsing](http://mywiki.wooledge.org/ComplexOptionParsing)。 –