Нужна помощь в манипулировании строковой переменной - PullRequest
2 голосов
/ 27 апреля 2011

Я написал сценарий оболочки для некоторой обработки и должен манипулировать переменной. По сути, переменная выглядит так -

vaa="set policy:set cli"

Моя цель - разделить его на две переменные в зависимости от позиции ":". Чтобы получить правильный конец, я делаю это -

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

Однако я не могу получить левую часть строки «установить политику». Я пытался сделать это -

vaa2=${vaa%*:}

Но это не сработало, и я получаю всю строку - "set policy: set cli". Любые идеи о том, как получить левую часть?

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Вы должны изменить свой шаблон

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 голос
/ 27 апреля 2011

Вот как это сделать (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
1 голос
/ 27 апреля 2011

Попробуйте это

vaa2=${vaa%:*}
echo ${vaa2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...