2014-01-11 1 views
0
#/bin/bash 
ls |sort -R |tail -$N |while read file; do 
mpg123 "$file" 
sleep 3 
done 

любая идея, почему она воспроизводит только 10 mp3-файлов и выходов? Есть сотни mp3, в том же каталоге, как этот файл (playmusic.sh)mpg123 играет только 10 песен, затем заканчивается

Благодаря

+1

возможно '$ N' составляет 10? –

+0

так что я могу полностью опустить $ N? – phpmydev

+3

10 строк - это выходные значения по умолчанию для головы и хвоста. если $ N вообще не определен, тогда этот код станет «хвостом», указывая хвосту на чтение из stdin, что будет «сортировкой» вывода .... и вы получите всего 10 строк (имена файлов), которые должны быть воспроизведены –

ответ

0

Как Marc B сказал, что проблема возникает из-за переменной N не будучи набором, который ведет tail по умолчанию используемый по умолчанию количество строк, которое равно 10. (Очевидно, это также может произойти, если N действительно установлено в 10.)

Основная проблема здесь заключается в том, что вы не понимаете, что на самом деле делает этот код. Я подозреваю, что вы на самом деле не пишете этот код самостоятельно. Несмотря на то, что это сценарий bash, он ожидает, что будет установлена ​​переменная N. Это весьма неортодоксальные для Баш скрипт, вы обычно используете

$1 

вместо $N, или еще лучше

${1:?} 

, который будет отображать сообщение об ошибке и выйти немедленно, если вы забыли передать в аргумент командной строки.