Ваше мышление в порядке, если только:
apt-get install package
вызывается молча перед каждой установкой:
apt-get update
Это сделает эти обновления излишними, если вы установите более одного пакета.
Кроме того, это значительно увеличило бы время установки каждого пакета.
И это даже невозможно, потому что один пакет может зависеть от другого.
Вам нужно позвонить:
apt-get update
перед любой установкой пакетов и/или обновлением.
Ваш подход $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
означает «печатать каждую строку Results.txt после применения к ней сценария, заданного -e
. Но на самом деле вы ничего не делаете с Results.txt, так в чем смысл?
Ваш код будет просто печатать каждую строку Results.txt
, а затем, в 10-й строке, он также будет печатать Total Number of Rejected Files =
и значение $count
. Если это действительно то, чем вы хотите заниматься, то отлично. Просто кажется очень маловероятным, что вы на самом деле хотели бы этого.