ファイルを編集するには、変数をbashスクリプトからsqlplusを介してPerlステートメントに渡す必要があります。 count
変数を渡さなくても正常に機能しますが、渡すときに問題が発生します。
count=$( sqlplus -s test/test <<-EOF
set pagesize 0;
set feedback off;
set verify off;
set heading off echo off;
select count(*) from test;
exit;
EOF)
if [ "$count" != "" ] && [ $count != "0" ]; then
Perl -lpe 'print "Total Number of Rejected Files = "$count"" if $. == 10' Results.txt >> data.txt
else
fi
私の知る限り、この部分だけの私の問題"$count"
。私は多くのことを試しました:
Perl -lpe 'print "Total Number of Rejected Files = $ENV{'count'}" if $. == 10' Results.txt >> data.txt
この :
Perl -lpe 'print "Total Number of Rejected Files = $ENV{count}" if $. == 10' Results.txt >> data.txt
しかし問題は、bash変数がPerlステートメントを通じて展開されないことです。
$ENV
のアプローチは問題なく機能します。最初にシェル変数をエクスポートする必要があります。 Perlスクリプトはサブシェルで実行されているため、変数を表示する唯一の方法は、最初に変数をエクスポートすることです。
count=$( sqlplus -s test/test <<-EOF
set pagesize 0;
set feedback off;
set verify off;
set heading off echo off;
select count(*) from test;
exit;
EOF)
export count
if [ "$count" != "" ] && [ $count != "0" ]; then
Perl -lpe 'print "Total Number of Rejected Files = $ENV{count}" if $. == 10' Results.txt >> data.txt
fi
私はあなたのPerlコマンドについて少し混乱しています。 Perl -lpe '' Results.txt
は、「-e
」で指定されたスクリプトを適用した後、Results.txtの各行を印刷します。ただし、実際にはResults.txtに対して何も実行していないので、何が重要なのでしょうか。
コードは単にResults.txt
のすべての行を出力し、10行目にはTotal Number of Rejected Files =
と$count
の値も出力します。それが本当にあなたがやりたいことなら、それは素晴らしいことです。あなたが実際にこれを望んでいる可能性は非常に低いようです。