Я пытаюсь создать ассоциативный массив в bash, содержащая имя файла (видео) и его продолжительность. Код :
#!/bin/sh
shopt -s nullglob
movie=(*.mp4)
declare -A MYMAP[$filename]=${duration}
total=${#movie[*]}
for (( i=0; i<=$(( $total -1 )); i++ ))
do
MYMAP[duration]=10
MYMAP[filename]=${movie[i]}
echo "${MYMAP[@]}"
echo "${!MYMAP[@]}"
done
echo "${#MYMAP[@]}"
Я хочу передать имя файла и сохранить его в переменной key, а длительность в переменной value.
Продолжительность фактически будет запрашиваться через ffprobe, но это несущественно на данный момент, потому что значения не передаются в переменные правильно.
результаты :
$ sh test2.sh
test2.sh: line 6: MYMAP[]: bad array subscript
10 File_01.mp4
duration filename
10 File_02.mp4
duration filename
10 File_03.mp4
duration filename
10 File_04.mp4
duration filename
10 File_05.mp4
duration filename
2
продолжительность и имя файла оба, кажется, попасть в значение, и ключ, кажется, просто вывод имен переменных. Также, если я объявлю массив таким образом:
declare -A MYMAP=[$filename]=${duration}
хотя он удаляет предупреждение, он все-таки выводит мусор.