KSH check if string starts with substring
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
?
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
.
Also:
foo='abcdef'
pattern='abc*'
case "$foo" in
$pattern) echo startswith ;;
*) echo otherwise ;;
esac
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 ]]
#!/bin/ksh
case ${foo:0:3} in
abc) echo success;;
*) echo failure;;
esac
精彩评论