代码之家  ›  专栏  ›  技术社区  ›  MAPK

如何使用引号运行系统命令

  •  1
  • MAPK  · 技术社区  · 7 年前

    我有一个bash命令,运行方式如下:

    esearch -db protein -query "AVA17449.1" | elink -target nuccore | efetch -format ft
    

    但我想在R中这样做(这不起作用)

    output <- system("esearch -db protein -query "AVA17449.1" | elink -target nuccore | efetch -format ft")
    

    在R中调用这个命令的正确方法是什么?

    P、 使用下面的命令可以安装S.esearch

    cd ~
    /bin/bash
    perl -MNet::FTP -e \
        '$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1);
        $ftp->login; $ftp->binary;
        $ftp->get("/entrez/entrezdirect/edirect.tar.gz");'
    gunzip -c edirect.tar.gz | tar xf -
    rm edirect.tar.gz
    builtin exit
    export PATH=$PATH:$HOME/edirect >& /dev/null || setenv PATH "${PATH}:$HOME/edirect"
    ./edirect/setup.sh
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Ben Bolker    7 年前

    使用单引号:

    cmd <- paste(c('esearch  -db protein -query "AVA17449.1"',
                   'elink -target nuccore',
                   'efetch -format ft'),
                  collapse=" | ")
    

    (在 paste(...,collapse=...) 这些东西不是必需的,但可能会使您的代码更具可读性…)

    或者用反斜杠保护双引号: ... -query \"AVA17449.\" ...