前提:我知道(有点)Python。
我正在制作一份R Sweave(R + Latex)文件。
要从命令行编译并执行它,我需要从控制台执行以下命令:
R CMD Sweaver fn.Rnw
pdflatex fn.tex
okular fn.pdf
其中
fn
不时变化(但在所有说明中都相同)。
由于我多次这样做,我想让这个过程自动化,就像写下这样的事情一样简单:
script <fn>
其中 fn 是3个单个命令中使用的参数。
我认为这在Python或Perl中是可行的,但我不知道从哪里开始。
提前致谢
答案 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将使用为执行变量替换而传递的位置参数。