我該如何替換grep?Shell腳本grep替代
CONNECTION=$(grep $INST\; $CONNFILE | cut -d\; -f2) || exit 3;
會收到以下錯誤消息,在我的PHP頁面:
「收到價值的grep:session_inactive:無此類文件或目錄」
我該如何替換grep?Shell腳本grep替代
CONNECTION=$(grep $INST\; $CONNFILE | cut -d\; -f2) || exit 3;
會收到以下錯誤消息,在我的PHP頁面:
「收到價值的grep:session_inactive:無此類文件或目錄」
第一:沒有理由不能成功此工作使用grep
。
但是:既然你想修剪出一個單獨的領域,你可以使用awk
做到既grep
和cut
的工作,同時確保它的執行文本搜索,而不是一個模式匹配:
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")
Charles, 即使在更改表達式之後,我在Zabbix下面臨相同的問題。 –
我需要一個[mcve]。事實上,除了你之外,沒有人能看到你的問題。 –
Charles, 即使更改表達式後,我在Zabbix頁面下面臨同樣的錯誤。 PS:Script works(腳本工作原理)在終端上運行時很好。 –
你試過'grep「$ INST;」'或'grep「$ {INST};」'?我猜你的INST變量可能包含空格。 – Deathgrip
這是一個很大的飛躍,問「我怎樣才能取代grep?」而不是「我怎樣才能修復我使用grep的方式?」 –
...另外,全部大寫的名稱用於具有OS或shell意義的變量;考慮養成爲自己的變量使用小寫字母名稱的習慣,因爲它們是[由POSIX保留](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html)供應用程序使用,並保證不會修改shell或POSIX指定的OS實用程序的行爲。並在考慮問題之前考慮養成使用http://shellcheck.net/的習慣 - 例如,這可能會指出缺少的引號。 –