Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash GNU`sem`似乎未正确阻止_Bash_Parallel Processing_Gnu Sem - Fatal编程技术网

Bash GNU`sem`似乎未正确阻止

Bash GNU`sem`似乎未正确阻止,bash,parallel-processing,gnu-sem,Bash,Parallel Processing,Gnu Sem,我编写了一个bash脚本,使用GNUsem与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)\:\

我编写了一个
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" 
那么我该怎么做才能使“真实”脚本正常工作呢


顺便说一句,我使用的是GNUBash,版本4.3.27(1)-发行版(x86_64-apple-darwin12.5.0)

为什么不运行一次--bibtex?你是不是Ole Tange,并行
的开发者?消息上说,
要使此引用通知静音,请运行“parallel--bibtex”一次或使用“no notice”。
因此我选择了第二种方法。这有什么区别吗?我尝试了第一种方法,得到
键入:“will-cite”并按enter键。>然后必须键入
将引用
,这在我试图运行或调试此脚本时确实是一件麻烦事。顺便说一句,它仍然不会阻塞。同时,为什么在这种情况下脚本没有阻塞?如果有人能够确定这一点,那就是你。:)为什么?正如它所说:您只需要运行一次“parallel--bibtex”。如果您可以将脚本更改为我可以运行的脚本,这将非常有用。我既没有aria2c也没有您的输入文件。为了获得更好的帮助,请尝试:我想问题是,为什么你会两次问我同样的、我认为是急迫的、不相关的问题,而不是解决真正的问题,为什么你会让用户跳越这样的圈圈来宣传你的实用程序?几十年来,我从未使用过一个实用程序,它要求……出于好奇,我问:为什么不做一次——bibtex,然后用它来做,而不是每次都不通知?如果感觉有点急迫,我很抱歉,但我真的很好奇为什么。这种行为的原因已经在电子邮件列表中讨论过了:如果您遵循gnu.org/software/parallel/man.html#REPORTING-bug,您最初的问题可能会得到回答
#!/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"