KSH check if string starts with substring

旧时模样 提交于 2019-11-27 23:25:01

问题


I need to check if the variable has value of string which starts with specified substring.

In Python it would be something like this:

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

What is the most explicit way to check in Ksh whether strig $foo starts with substring bar?


回答1:


It's very simple but looks a bit odd:

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

One would assume that ksh would expand the pattern with the files in the current directory but instead, it does pattern matching. You need the [[, though. Single [ won't work. The quotes are not strictly necessary if there are no blanks in foo.




回答2:


Also:

foo='abcdef'
pattern='abc*'

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



回答3:


You can also do regex matching:

if [[ $foo =~ ^abc ]]

For more complex patterns, I recommend using a variable instead of putting the pattern directly in the test:

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


来源:https://stackoverflow.com/questions/4080388/ksh-check-if-string-starts-with-substring

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!