awk изменить переменную оболочки - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы изменить несколько переменных оболочки в awk:
echo "$LINE_IN" | awk '/pattern1/ {print $0; WRITTEN=1; REC=$REC+1}' >> $FILE1

Я пытался поставить eval, но все равно не работает:

eval $( echo "$LINE_IN" | awk '/pattern1/ {print $0; WRITTEN=1; REC=$REC+1}' >> $FILE1 )

Есть предложения? Я хотел бы использовать скрипт k-shell, спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

Подсчитайте попадания, когда вы закончите:

echo "${LINE_IN}" | grep -E 'pattern1' > "${FILE1}"
REC=$(wc -l < "${FILE1}")
if (( REC > 0 )); then 
   WRITTEN=1
fi

Если вы действительно хотите использовать awk, вы должны позволить awk записывать результаты в stdout и анализировать stdout:

echo "${LINE_IN}" | awk '/echo/ {print $0 > "x3"; WRITTEN=1; REC++}
                         END { print "WRITTEN=" WRITTEN; print "REC=" REC}'
WRITTEN=1
REC=6

И когда вы хотите, чтобы переменные действительно устанавливались, оберните их:

source (echo "${LINE_IN}" | awk '/echo/ {print $0 > "x3"; WRITTEN=1; REC++}
                         END { print "WRITTEN=" WRITTEN; print "REC=" REC}')

Примечание: привыкните к использованию имен переменных в нижнем регистре, таких как written, file и rec.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...