2011-04-27 4 views
2

일부 처리를 수행하기 위해 쉘 스크립트를 작성했으며 변수를 조작해야합니다. 기본적으로, 변수는 다음과 같이이다 -문자열 변수 조작에 도움이 필요합니다.

vaa="set policy:set cli" 

내 목적의 위치에 따라 두 개의 변수로 분할하는 것입니다 "". 오른쪽 끝을 얻으려면, 나는이 일을하고 -

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

그러나, 내가 문자열 "정책을 설정"의 왼쪽 부분을 얻을 수 없습니다입니다. 나는 이것을 시도했다. -

vaa2=${vaa%*:} 

그러나 그것은 작동하지 않고 전체 문자열을 얻는다. 왼쪽 부분을 얻는 방법에 대한 아이디어가 있습니까?

답변

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

본쉘 유형에서는 "="주위에 공백이 없어야합니다. –

+0

감사합니다. 이제 해결되어야합니다. –

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 
관련 문제