问题
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