Array output for option of command in bash script

Posted by dewaforex on Stack Overflow See other posts from Stack Overflow or by dewaforex
Published on 2011-03-03T05:53:07Z Indexed on 2011/03/03 7:24 UTC
Read the original article Hit count: 359

Filed under:
|
|
|
|

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

© Stack Overflow or respective owner

Related posts about bash

Related posts about encoding