我有一个rpm规范,在%pre部分中运行了一些测试。
我正在使用AIX 5.3和korn shell。
我的脚本用ps即foo和foobar(我只想要foo)来搜索某些内容,然后测试每个值以查看它是否与模式匹配。
然而代码
if [[ $x =~ foo$ ]]; then echo match fi
返回错误 =〜意外
man说string = ~ere
如果字符串匹配模式〜(E),则为真,其中ere是扩展正则表达式。
所以似乎支持=〜。
我做错了什么?
答案 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
。