在复杂bash表达式中分组命令

在复杂bash表达式中分组命令,bash,Bash,我可以访问计算集群(LSF),向计算节点发送内容的基本方法是: bsub -I <command> 但是我注意到实际上只有第一个命令(configure)在集群上运行,其余两个在本地运行。将整个命令分组并将其传递给bsub的最佳方式是什么?假设您所指的bsub是文档化的,您有两个选项: bsub -I sh -c '../configure --prefix="..." \ --solver=...\

我可以访问计算集群(LSF),向计算节点发送内容的基本方法是:

bsub -I <command>

但是我注意到实际上只有第一个命令(configure)在集群上运行,其余两个在本地运行。将整个命令分组并将其传递给bsub的最佳方式是什么?

假设您所指的
bsub
是文档化的,您有两个选项:

bsub -I sh -c '../configure --prefix="..." \
                     --solver=...\
                     --with-cflags=...\
        && make -j8 \
        && make install'
  • 将要执行的整个命令用单引号括起来(假设在命令中的任何位置都不使用单引号):

  • 将命令输入bsub的标准输入,使用HERE文档避免引用问题:

    bsub -I <<END
    ../configure --prefix="..." \
                 --solver=...\
                 --with-cflags=...\
    && make -j8 \
    && make install
    END
    

    bsub-I我喜欢这里的文档解决方案。使用单引号,然后在命令中担心它们,感觉很笨拙。谢谢
    
    bsub -I '../configure --prefix="..."\
                          --solver=...\
                          --with-cflags=...\
            && make -j8 \
            && make install'
    
    bsub -I <<END
    ../configure --prefix="..." \
                 --solver=...\
                 --with-cflags=...\
    && make -j8 \
    && make install
    END