我有一个rpm规范,它在%预部分中运行一些测试。
我正在使用AIX5.3和。
我的脚本从ps、foo和foobar (我只想要foo)中看到一些东西,然后测试每个值,看看它是否与模式匹配。
然而,代码
if [[ $x =~ foo$ ]]; then echo match fi返回错误=~意外
男人说string =~ ere
如果字符串匹配模式~(E)ere,其中ere是扩展的正则表达式,则为True。
所以看来=得到了支持。
我做错什么了?
发布于 2014-11-11 23:58:39
您根本不需要对正在执行的操作进行正则化(检查字符串是否有给定的后缀)。
if [[ $x = *foo ]]; then echo match; fi...provides等价行为
if [[ $x =~ foo$ ]]; then echo match; fi当然,...but在没有后一种特性的shell上工作。
如果您确实希望在=~中使用[[ ]],那么请确保您正在运行ksh93;AIX上的默认ksh是一个更老的实现。
要运行ksh93,请使用#!/usr/bin/ksh93 (而不是#!/usr/bin/ksh )启动脚本。
https://stackoverflow.com/questions/26876809
复制相似问题