While 循环语法错误

While 循环语法错误

我正在尝试修改 apt-fast 以支持并行下载和安装。

我对这个循环有些困惑:

get_install(){
while ((!${pkg}-finished))
do
  if [ "$CURNUM" -lt "$_MAXNUM" ]; then
    let CURNUM=$CURNUM+1
    eval "aria2c -c -j ${_MAXNUM} -x ${_MAXNUM} -s ${_MAXNUM} \
           -i /tmp/${pkg}-dl --min-split-size=1M --connect-timeout=600 \
           --timeout=600 -m0 && find -type f -name "$(cat /tmp/${pkg}-name)" \
           -execdir mv -ft "$APTCACHE" {} \+ && \
           ${_APTMGR} -y install $(cat /tmp/${pkg}-name) \
           "${APTCACHE}/$(cat /tmp/${pkg}-name)" && let CURNUM=$CURNUM-1 && \
           ${pkg}-finished=1 &"
  else
    eval "sleep 1 &"
done
}

(与源代码相比,代码略微经过了编辑,以提高可读性。)

它给了我:

/usr/sbin/apt-fast: line 297: syntax error near unexpected token `done'
/usr/sbin/apt-fast: line 297: `done'

我确信这是我忽略的一些小问题。如果有人需要完整脚本的副本,可以在这里找到:http://www.filedropper.com/apt-fast_1我也会接受任何其他批评!要尝试运行它,您可能需要先从 ppa 安装 apt-fast,说明如下:https://github.com/ilikenwf/apt-fast安装后,只需用上面链接的文件覆盖 /usr/sbin/apt-fast 即可。

答案1

正如 g_p 在评论中所说,你的并未终止。Bash 在's之前if [ "$CURNUM" -lt "$_MAXNUM" ]期待一个。fiwhiledone

相关内容