2017-01-25 2 views
-1

я получил следующий набор переменных в Баш:

ver=$(/usr/lib/virtualbox/VBoxManage -v | tail -1) 

тогда я следующая переменная, которую я не совсем понимаю:

pkg_ver="${ver%%r*}" 

Можно ли уточнить, что это делает, и как pkg_ver связан с оригиналом ver значение?

ответ

2

Это bash parameter expansion синтаксис для извлечения текста из конца строки Шифрование до первого вхождения r

name="Ivory" 
printf "%s\n" "${name%%r*}" 
Ivo 

$ {параметр %% ОБРАЗЕЦ}

Эта форма, чтобы удалить описанный шаблон пытается чтобы совместить его с концом строки. Оператор «%» попытается удалить кратчайший текст, соответствующий шаблону, в то время как «%%» пытается сделать это с самым длинным соответствием текста.

0

Вы получите все от переменной ver до первого символа «r», и оно будет храниться внутри pkg_ver.

export ver=aaarrr 
echo "${ver%%r*}" 
aaa 
+2

«Экспорт» здесь совершенно не нужен. Среда - ограниченный ресурс - чем больше контента вы экспортировали в среду (и, таким образом, скопировали в исходную среду для других программ, запускаемых вашим скриптом), тем меньше будет максимальная длина командной строки при запуске новых процессов. –

Смежные вопросы