2

シェル スクリプト内にスクリプト ファイルを埋め込むことについて質問があります。他のスクリプトをアンパックする単一のシェル スクリプトを作成する必要があることがよくありますが、埋め込まれたスクリプトのすべての変数をコメント アウトする必要はありません。私のシェルスクリプトの内容の例:

echo "Hello world"
pwd

cat>embedded_perl_script<<EOF
#!/usr/bin/perl -w
\$input = \$ARGV[0];
my \$argc;
\$argc = @ARGV;
print \$input
EOF

perl embedded_perl_script
echo "Finished!"

このコードは正常に動作しますが、埋め込まれた perl スクリプトのすべての変数をコメントアウトしないようにする方法が本当に必要です。助言がありますか?


ただし、パフォーマンスに違いはありません。

fn1<-function(a,b) c<-a+b
fn2<-function(a,b) c <- a + b

library(rbenchmark)

> benchmark(fn1(1,2),fn2(1,2),replications=10000000)
       test replications elapsed relative user.self sys.self user.child
1 fn1(1, 2)     10000000   53.87    1.212      53.4     0.37         NA
2 fn2(1, 2)     10000000   44.46    1.000      44.3     0.14         NA

と同じmicrobenchmark

Unit: nanoseconds
      expr min  lq median  uq      max neval
 fn1(1, 2)   0 467    467 468 90397803 1e+07
 fn2(1, 2)   0 467    467 468 85995868 1e+07

だから最初の結果は偽物だった..

4

1 に答える 1

1

これを試して :

echo "Hello world"
pwd

cat>embedded_perl_script<<'EOF'
#!/usr/bin/perl -w
$input = $ARGV[0];
my $argc;
$argc = @ARGV;
print $input
EOF

perl embedded_perl_script
echo "Finished!"

が=)EOFに変更されたことに注意してください。'EOF'

: この手法の名前はhere-doc です

于 2013-03-12T17:55:02.847 に答える