2015-03-27 4 views
0

Если у меня есть массив в Баш, такие как:Изменить элементы массива на лету [баш]

a=(1 2 3) 

Есть ли способ, что я могу напечатать массив в чистой и краткой форме, но в то же время изменение вывода для каждого элемента (добавление/удаление текста на него). Скажем, я хочу напечатать массив, но добавить «lol» в конец каждого элемента, когда он будет напечатан ... Например.

echo ${a[@]lol} 
1lol 2lol 3lol 

Кто-нибудь знает, как это сделать, не создавая новый массив или не проводя цикл через исходный массив? Расширение параметров

+0

на вопрос [здесь] (HTTP : //stackoverflow.com/q/20366609/258523) упоминает механизм для этого. –

ответ

0

применяется к каждому элементу:

$ a=(1 2 3) 
$ echo "${a[@]/%/lol}" 
1lol 2lol 3lol 

Для печати в частности, рассмотреть возможность использования printf, которая повторяет узор, пока аргументы не будут исчерпаны:

$ printf "%slol\n" "${a[@]}" 
1lol 
2lol 
3lol 
Смежные вопросы