我该如何替换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/的习惯 - 例如,这可能会指出缺少的引号。 –