【问题标题】:Error on executing gnu parallel command执行 gnu 并行命令时出错
【发布时间】:2024-01-12 00:36:01
【问题描述】:

我正在尝试使用 gnu 并行执行脚本 test3.exp(如下):----

seq 1 3 | parallel test3.exp data{}/

但每次我收到此错误时:---

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /usr/bin/parallel line 119.

我使用 apt-get install parallel 安装了它。

apt-cache policy parallel perl 的输出是:---

  bhavya@guavus:/usr/bin$ apt-cache policy parallel perl
  parallel:
    Installed: 20120422-1
    Candidate: 20141022+ds1-1
    Version table:
       20141022+ds1-1 500
          500 http://in.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
          500 http://in.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
   *** 20120422-1 100
          100 /var/lib/dpkg/status
  perl:
    Installed: 5.22.1-9
    Candidate: 5.22.1-9
    Version table:
   *** 5.22.1-9 500
          500 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
          100 /var/lib/dpkg/status

请帮帮我。

【问题讨论】:

    标签: bash shell parallel-processing gnu-parallel


    【解决方案1】:

    更新存储库,然后使用更新它

    sudo apt-get install parallel
    

    为我工作。

    apt-cache policy parallel perl 的内容:--

    bhavya@guavus:~/Documents/script$ apt-cache policy parallel perl
        parallel:
          Installed: 20141022+ds1-1
          Candidate: 20141022+ds1-1
          Version table:
         *** 20141022+ds1-1 500
                500 http://in.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
                500 http://in.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
                100 /var/lib/dpkg/status
        perl:
          Installed: 5.22.1-9
          Candidate: 5.22.1-9
          Version table:
         *** 5.22.1-9 500
                500 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
                100 /var/lib/dpkg/status
    

    【讨论】:

      【解决方案2】:

      perl 的版本比 /usr/bin/parallel 更新。 defined 用于检查数组或散列中是否存在条目

      defined($array[2])
      defined($hash{"word"})
      
      # what causes error in parallel (20120422)
      119: ((defined @::opt_v) ? "-vv" : ""),
      # what is suggested in error message
      119: ((@::opt_v) ? "-vv" : ""),
      

      【讨论】: