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)
,