ksh正则表达式错误' =〜`意外

时间:2014-11-11 23:54:21

标签: regex ksh aix

我有一个rpm规范,在%pre部分中运行了一些测试。

我正在使用AIX 5.3和korn shell。

我的脚本用ps即foo和foobar(我只想要foo)来搜索某些内容,然后测试每个值以查看它是否与模式匹配。

然而代码

if [[ $x =~ foo$ ]]; then echo match fi

返回错误 =〜意外

man说string = ~ere

如果字符串匹配模式〜(E),则为真,其中ere是扩展正则表达式。

所以似乎支持=〜。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您根本不需要正在执行的操作(检查字符串是否具有给定后缀)。

if [[ $x = *foo ]]; then echo match; fi

...提供与

相同的行为
if [[ $x =~ foo$ ]]; then echo match; fi

...但是,当然,它适用于没有后一种功能的shell。


如果您 想在=~内使用[[ ]],请确保您正在运行ksh93; AIX上的默认ksh是一个更老的实现。

要运行ksh93,请使用#!/usr/bin/ksh93启动脚本,而不是#!/usr/bin/ksh