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

时间:2018-08-18 20:43:09

标签: r linux bash system

我有一个像这样运行的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 个答案:

答案 0 :(得分:3)

可以使用单引号:

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

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

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

单引号可能更具可读性,但是反斜杠可以在更复杂的情况下工作,在这种情况下,您需要在字符串中同时使用两种引号...