Манипулировать строкой в ​​сценарии оболочки - PullRequest
0 голосов
/ 17 апреля 2011

Я пишу сценарий оболочки для какой-то цели.У меня есть переменная вида -

var1 = "policy=set policy"

Теперь мне нужно манипулировать переменной var, чтобы получить строку после индекса =.То есть я должен был «установить политику».Также мне нужно это для многих других переменных, где значение «=» не является постоянным.Как

var2 = "bgroup = set bgroup port"
var3 = "utm = set security utm" 

Можете ли вы дать мне идею, как это сделать, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 17 апреля 2011
${var#*=}

удаляет самое короткое совпадение *= слева. Обратите внимание, что это не на месте: если вы хотите сохранить результат, вам придется сохранить результат в переменной.

Кстати, это для bash. AFAIK это также работает для ksh и zsh, но не для csh или tcsh.

0 голосов
/ 17 апреля 2011

Другие способы, которые не зависят от того, какая у вас оболочка.

$ var1="policy=set policy"
$ echo $var1 | awk '{sub(/.[^=]*=/,"")}1'
set policy
$ echo $var1 | cut -d= -f2-
set policy
$ echo $var1 | ruby -e 'puts gets.split(/=/,2)[1]'
set policy
$ echo $var1 | sed 's/.[^=]*=//'
set policy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...