Передавая переменную сценарию bash, который использует 'EOF' и считает переменную литералом [closed]

Прежде всего, вы должны упростить вашу команду до:

$ find "/path to log directory/" -maxdepth 1 -type d -mtime +0 | sed 's#.*/##; s#_##g' 
01052016
03052016
04052016
02052016

Затем, чтобы сохранить как массив, вы можете просто сделать:

array=( $(find "/path to log directory/" -maxdepth 1 -type d -mtime +0 | sed 's#.*/##; s#_##g') )

Это сохраняет как хотите, в массиве с числовыми возрастающими индексами, начинающимися с 0:

$ for i in {0..3}; do echo "$i : ${array[$i]}"; done
0 : 01052016
1 : 03052016
2 : 04052016
3 : 02052016

Тем не менее, если вам действительно нужно перебирать ассоциативный массив, вы тоже можете это сделать:

$ declare -a array=( "foo"=>"bar" "baz"=>"bad" )
$ for i in ${!array[*]}; do echo "$i : ${array[$i]}"; done
baz : bad
foo : bar
9
21.06.2014, 15:17
0 ответов

Теги

Похожие вопросы