2017-05-26 88 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(脚本工作原理)在终端上运行时很好。 –