использование переменной bash в команде perl в bash

Обоснование

Ваше мышление в порядке, если только:

apt-get install package

вызывается молча перед каждой установкой:

apt-get update

Это сделает эти обновления излишними, если вы установите более одного пакета.

Кроме того, это значительно увеличило бы время установки каждого пакета.

И это даже невозможно, потому что один пакет может зависеть от другого.


Заключение

Вам нужно позвонить:

apt-get update

перед любой установкой пакетов и/или обновлением.

2
29.04.2020, 04:27
1 ответ

Ваш подход $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. Если это действительно то, чем вы хотите заниматься, то отлично. Просто кажется очень маловероятным, что вы на самом деле хотели бы этого.

6
19.03.2021, 02:27

Теги

Похожие вопросы