2017-05-26 84 views
0

我該如何替換grep?Shell腳本grep替代

CONNECTION=$(grep $INST\; $CONNFILE | cut -d\; -f2) || exit 3; 

會收到以下錯誤消息,在我的PHP頁面:

「收到價值的grep:session_inactive:無此類文件或目錄」

+1

你試過'grep「$ INST;」'或'grep「$ {INST};」'?我猜你的INST變量可能包含空格。 – Deathgrip

+1

這是一個很大的飛躍,問「我怎樣才能取代grep?」而不是「我怎樣才能修復我使用grep的方式?」 –

+0

...另外,全部大寫的名稱用於具有OS或shell意義的變量;考慮養成爲自己的變量使用小寫字母名稱的習慣,因爲它們是[由POSIX保留](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html)供應用程序使用,並保證不會修改shell或POSIX指定的OS實用程序的行爲。並在考慮問題之前考慮養成使用http://shellcheck.net/的習慣 - 例如,這可能會指出缺少的引號。 –

回答

0

第一:沒有理由不能成功此工作使用grep


但是:既然你想修剪出一個單獨的領域,你可以使用awk做到既grepcut的工作,同時確保它的執行文本搜索,而不是一個模式匹配:

connfile="$SCRIPTDIR/credentials" 
connection=$(awk -F';' -v inst="${INST};" 'index($0, inst) > 0 { print $2; }' <"$connfile") 

更妙的是,如果你真的想要做的是比賽的第一場,並打印第二個,包括第一個匹配行:

connection=$(awk -F';' -v inst="${INST};" '$1 == inst { print $2; exit; }' <"$connfile") 
+0

Charles, 即使在更改表達式之後,我在Zabbix下面臨相同的問題。 –

+0

我需要一個[mcve]。事實上,除了你之外,沒有人能看到你的問題。 –

+0

Charles, 即使更改表達式後,我在Zabbix頁面下面臨同樣的錯誤。 PS:Script works(腳本工作原理)在終端上運行時很好。 –