我需要检查变量是否具有以指定子字符串开头的字符串值。
在Python中它会是这样的:
foo = 'abcdef'
if foo.startswith('abc'):
print 'Success'
检查Ksh的最明确方法是strig $foo
是否以子串bar
开头?
答案 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 ]]