You are not logged in.
If I make
mkvmerge -i *.mp4
I have an output in which I can see the order for audio and video tracks in a .mp4 file.
Depending on that output, I'm trying to implement an if-else statement:
for i in *".mp4"; do
TRACKS="$(mkvmerge -i *".mp4")"
if [$TRACKS == *0: audio*]; then
i=${i%.mp4}
mkvmerge -o -v "$i.mkv" \
--language 1:eng -a 1 -d 0 -S -T "$i.mp4" \
--language 0:eng -s 0 -D -A -T "$i.en.srt" \
--language 0:spa -s 0 -D -A -T "$i.es.srt" \
else
i=${i%.mp4}
mkvmerge -o -v "$i.mkv" \
--language 1:eng -a 0 -d 1 -S -T "$i.mp4" \
--language 0:eng -s 0 -D -A -T "$i.en.srt" \
--language 0:spa -s 0 -D -A -T "$i.es.srt" \
fi
done
But I'm doing something wrong and it doesn't take into account the comparison.
How can I solve it?
Regards
Last edited by doblerone (2014-10-22 20:47:22)
Offline
First, you need spaces between the brackets:
if [ $TRACKS == *0: audio* ]; then
Then, if you are going to use `[` rather than the more robust `[[`, you need to quote $TRACKS.
Offline
I change it, but it doesn't work neither:
TRACKS="$(mkvmerge -i *".mp4")"
if [[ $TRACKS == *0: audio* ]]; then
i=${i%.mp4}
mkvmerge -o -v "$i.mkv" \
--language 1:eng -a 0 -d 1 -S -T "$i.mp4" \
--language 0:eng -s 0 -D -A -T "$i.en.srt" \
--language 0:spa -s 0 -D -A -T "$i.es.srt" \
else
i=${i%.mp4}
mkvmerge -o -v "$i.mkv" \
--language 1:eng -a 1 -d 0 -S -T "$i.mp4" \
--language 0:eng -s 0 -D -A -T "$i.en.srt" \
--language 0:spa -s 0 -D -A -T "$i.es.srt" \
fi
subs+mkvmerge.sh: line 34: syntax error in conditional expression
subs+mkvmerge.sh: line 34: syntax error near `audio*'
subs+mkvmerge.sh: line 34: ` if [[ $TRACKS == *0: audio* ]]; then'
Offline
Read the link jasonwryan posted. Pay particular attention to quoting (the use of " " around variables and expressions).
Offline
Read the link jasonwryan posted. Pay particular attention to quoting (the use of " " around variables and expressions).
I got it!!!
if [[ $TRACKS = *"0: audio"* ]]; then
Thanks guys!
Last edited by doblerone (2014-10-22 20:46:12)
Offline
Your TRACKS doesn't have the value you expect it to have. Now reread your script and the link posted above.
Offline