在复杂的bash表达式中对命令进行分组

时间:2014-08-26 19:59:37

标签: bash

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

bsub -I <command>

我把它放在一个文件中:

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

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

2 个答案:

答案 0 :(得分:2)

假设您所指的bsub是记录的here,您有两种选择:

  1. 使用单引号执行整个命令(假设您不在命令中的任何位置使用单引号):

    bsub -I '../configure --prefix="..."\
                          --solver=...\
                          --with-cflags=...\
            && make -j8 \
            && make install'
    
  2. 使用HERE文档将命令输入bsub的标准输入,以避免引用问题:

    bsub -I <<END
    ../configure --prefix="..." \
                 --solver=...\
                 --with-cflags=...\
    && make -j8 \
    && make install
    END
    
  3. 或者,与第二个非常类似,将命令放入文件并提供文件作为输入。

答案 1 :(得分:0)

bsub -I sh -c '../configure --prefix="..." \
                     --solver=...\
                     --with-cflags=...\
        && make -j8 \
        && make install'