флаг по умолчанию всегда будет равен ни одному, ни [0-9], если флаг по умолчанию равен [0-9], тогда track_number равен 1, но если track_number не равно ничего тогда track_number не равно ничего
default_flag=$(mkvmerge --identify-verbose video.mkv | awk -F'[ :]+' '$4=="subtitles"&&/default_track:1[[:space:]]/{print $3}')
По какой-то причине это не работает:
if [ -s $default_flag ]; then track_number=""; else track_number="1"; fi
«... но если track_number ничего не значит, то track_number ничего не значит» .... Ну, да. Это будет правдой на подавляющем большинстве компьютерных языков, с которыми вы когда-либо работали. Системы, не демонстрирующие рефлексивные свойства на равенстве, довольно редки, и с ними трудно работать ... – twalberg