2013-08-13 2 views
0

Итак, я ожидаю, что пользователь будет вводить строку в следующем виде: «something-5, something-2, something-3».Получить левую сторону дефиса из строки в bash?

Я получил строку запятой разделить с этим:.

IFS=',' read -a SLAVE_ARR <<< "$slaveAmounts" 

где SLAVE_ARR является новый массив и slaveAmounts это строка, передаваемая в

Однако, я хочу, чтобы прочитать в левой и правой стороны каждого из значений, разделенных запятой. Как мне это сделать? поэтому в основном я хочу команду, поэтому я могу сохранить левую сторону в одной переменной, а правую - в другой.

ответ

1

Просто используйте Баш string manipulation:

[[email protected] ~]$ item=something-5 
[[email protected] ~]$ echo ${item#*-} 
5 
[[email protected] ~]$ echo ${item%-*} 
something 

И сделать for item in ${SLAVE_ARR[*]} перебирать их.

+0

Где бы я ни мог узнать больше о манипуляциях/разделителях строки bash? – vsingal5

+0

Это сработало, кстати! – vsingal5

+0

@ vsingal5 Я связал страницу по TLDP. Также есть замечательная глава о том, как Камерон Ньюхэм [* Изучает bash Shell: Unix Shell Programming *] (http://www.amazon.ca/Learning-bash-Shell-Unix-Programming/dp/0596009658). – cnicutar

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