GNU `sem`, похоже, не блокируется должным образом

Я написал bash скрипт для использования GNU sem загружать несколько файлов одновременно с aria2 и затем подайте звуковой сигнал, когда это будет сделано.

#!/bin/bash

filename="${1:-files.txt}" # default input file is files.txt

dflag=0
#currdir=''

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]]
        then
            if [ $dflag -eq 1 ]
            then
                dflag=0
            fi
            echo "URL: '$line'"
            # -j N Run up to N commands in parallel
            # -j +0 is useful as it will run number-of-cpu-cores jobs simultaneously
            sem --no-notice -j +0 aria2c --file-allocation=none -c -x10 -j10 -d \"$currdir\" \"$line\"
        else
            echo "Directory: '$line'"
            if [ $dflag -eq 1 ]
            then
                currdir="${currdir}/${line}"
            else
                #currdir=''
                currdir="$line"
                dflag=1
            fi
            echo "$currdir"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir"
            fi
        fi
    fi
done < "$filename"
sem --wait # waits until all jobs are done
echo -en "\007"; echo -en "\007"; echo -en "\007" 

Мой сценарий работает нормально, за исключением того, что он подает звуковой сигнал задолго до окончания работы. Я думал, что сценарий блокируется, пока цикл не завершен, но он этого не делает. Если я попробую простой тестовый скрипт, он будет работать как положено:

#!/bin/bash

for i in {1..10}
do
  sem --no-notice -j +0 echo $i
done
sem --wait
echo -en "\007"; echo -en "\007"; echo -en "\007"

Так что же мне сделать, чтобы "настоящий" скрипт работал правильно?

Кстати я использую GNU bash, version 4.3.27(1)-release (x86_64-apple-darwin12.5.0),

0 ответов

Другие вопросы по тегам