2011-04-27 76 views
2

我已经编写了一个shell脚本来完成一些处理并且必须处理一个变量。基本上,变量是这样的 -需要操作字符串变量的帮助

vaa="set policy:set cli" 

我的目的是根据“:”的位置将它分成两个变量。为了得到最终结果,我正在这样做 -

vaa1=${vaa#*:} 
echo ${vaa1} //this prints "set cli" which I want 

但是,我无法获得字符串“set policy”的左边部分。我试着这样做 -

vaa2=${vaa%*:} 

但它没有工作,我得到整个字符串 - “设置策略:设置cli”。有关如何获得左侧部分的任何想法?

回答

1

你需要改变你的模式

echo ${vaa#*:} 
# from the beginning of the string, 
# delete anything up to and including the first : 

echo ${vaa%:*} 
# from the end of the string, 
# delete the last : and anything after it 
1

试试这个

vaa2=${vaa%:*} 
echo ${vaa2} 
+0

在Bourne类型的炮弹中,“=”周围不能有空格 – 2011-04-27 13:27:04

+0

谢谢,现在应该修复。 – 2011-04-27 13:30:16

1

这是如何做到这一点(bash)的

$ vaa="set policy:set cli" 
$ IFS=":" 
$ set -- $vaa 
$ echo $1 
set policy 
$ echo $2 
set cli 

或读入一个数组

$ IFS=":" 
$ read -a array <<< "$vaa" 
$ echo "${array[0]}" 
set policy 
$ echo "${array[1]}" 
set cli