Array output for option of command in bash script
- by dewaforex
Hi,
Sorry for my bad english
I'm stuck figure out with my bash script with array for option of command
I make bash script to extract attachments from mkv file, and at the end merge again that attachments to mkv file after the video/audio has been encoding..
this is for extract attachment
#find the total of attachment
A=$(mkvmerge -i input.mkv | grep -i attachment | awk '{printf $3 "\n"}' | sed 's;\:;;' | awk 'END { print NR }')
#extract it
for (( i=1; i<=$A; i++ ))
do
font[${i}]="$(mkvmerge -i input.mkv | grep -i attachment | awk '{for (i=11; i <= NF; i++) printf($i"%c" , (i==NF)?ORS:OFS) }' | sed "s/'//g" | awk "NR==$i")"
mkvextract attachments input.mkv $i:"${font[${i}]}"
done
And now for merge again the attachment
for (( i=1; i<=$A; i++ ))
do
#seach for space between file name and and '\' before the space because some attachment has space in filename
font1[${i}]=$(echo ${font[${i}]} | sed 's/ /\\ /g')
#make option for add attachment
attachment[${i}]=$"--attach-file ${font1[${i}]}"
done
mkvmerge -o output.mkv -d 1 -S test.mp4 sub.ass ${attachment[*]}
The problem, still can't work for file name with space.
When I tried echo the ${attachment[*]}, It's seem all right
--attach-file Beach.ttf --attach-file Candara.ttf --attach-file CASUCM.TTF --attach-file Complete\ in\ Him.ttf --attach-file CURLZ_.TTF --attach-file Frostys\ Winterland.TTF --attach-file stilltim.ttf
But the output still recognize the file name with space only the first word.
mkvmerge v3.0.0 ('Hang up your Hang-Ups') built on Dec 6 2010 19:19:04
Automatic MIME type recognition for 'Beach.ttf': application/x-truetype-font
Automatic MIME type recognition for 'Candara.ttf': application/x-truetype-font
Automatic MIME type recognition for 'CASUCM.TTF': application/x-truetype-font
Error: The file 'Complete\' cannot be attached because it does not exist or cannot be read.
I hope somebody can help me.
Thanks