KSH检查字符串是否以substring开头

时间:2010-11-02 17:27:43

标签: shell string ksh

我需要检查变量是否具有以指定子字符串开头的字符串值。

在Python中它会是这样的:

foo = 'abcdef'
if foo.startswith('abc'):
    print 'Success'

检查Ksh的最明确方法是strig $foo是否以子串bar开头?

3 个答案:

答案 0 :(得分:25)

这很简单,但看起来有点奇怪:

if [[ "$foo" == abc* ]]; then ...

可以假设ksh会使用当前目录中的文件扩展模式,但是它会进行模式匹配。但是,您需要[[。单[将不起作用。如果foo中没有空格,则引号不是绝对必要的。

答案 1 :(得分:17)

此外:

foo='abcdef'
pattern='abc*'

case "$foo" in
    $pattern) echo startswith ;;
    *) echo otherwise ;;
esac

答案 2 :(得分:6)

您还可以进行正则表达式匹配:

if [[ $foo =~ ^abc ]]

对于更复杂的模式,我建议使用变量而不是将模式直接放在测试中:

bar='^begin (abc|def|ghi)[^ ]* end$'
if [[ $foo =~ $bar ]]