如何创建一个执行(在Linux中)一系列命令的简单脚本?

时间:2014-02-27 12:05:13

标签: perl scripting

前提:我知道(有点)Python。

我正在制作一份R Sweave(R + Latex)文件。

要从命令行编译并执行它,我需要从控制台执行以下命令:

R CMD Sweaver fn.Rnw
pdflatex fn.tex
okular fn.pdf

其中

fn

不时变化(但在所有说明中都相同)。

由于我多次这样做,我想让这个过程自动化,就像写下这样的事情一样简单:

script <fn>

其中 fn 是3个单个命令中使用的参数。

我认为这在Python或Perl中是可行的,但我不知道从哪里开始。

提前致谢

2 个答案:

答案 0 :(得分:2)

以下是Perl脚本示例(未经测试):

#!/usr/bin/perl -w

use strict;
use warnings;

my $fn = shift or die "Usage: $0 function_name\n";

# I assume this needs to exist?
-e "$fn.Rnw" or die "$fn.Rnw does not exist.\n";

0 == system( 'R', 'CMD', 'Sweaver', "$fn.Rnw" ) or die "R failed.\n";
0 == system( 'pdflatex ', "$fn.tex" ) or die "pdflatex failed.\n";
0 == system( 'okular ', "$fn.pdf" ) or die "R failed.\n";

exit 0;

将其写入文件,使其chmod +x可执行,您应该设置。

答案 1 :(得分:1)

您可以编写一个包含以下内容的脚本:

R CMD Sweaver "$1.Rnw"
pdflatex "$1.tex"
okular "$1.pdf"

如果您将其命名为foo.sh,则可以通过以下方式调用它:

sh foo.sh fn

bash foo.sh fn

并且shell将使用为执行变量替换而传递的位置参数。