Вопрос

У меня есть небольшой скрипт bash, который обрабатывает абзац grep/awk, используя ключевое слово.

Но после добавления дополнительных кодов: set var = "(......)" он печатает только пустую строку, а не абзац.

Поэтому я хотел бы спросить, знает ли кто-нибудь, как правильно передать вывод awk в переменную для вывода?

Мои коды:

#!/bin/sh

set var = "(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop
/logs/Default.log)"
echo $var;

Спасибо!

Это было полезно?

Решение

Использовать замена команд захватить вывод процесса.

#!/bin/sh

VAR="$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)"
echo "$VAR"

Некоторые общие советы в отношении сценариев Shell:

  • (Почти) всегда цитируйте каждую переменную ссылку.
  • Никогда не кладите пробелы вокруг равных знаков в переменном задании.

Другие советы

  • Вам нужно использовать «Подстановка команды». Поместите команду внутри либо BackTicks, `COMMAND` или, в паре круглых скобок, предшествующие знак доллара, $(COMMAND).
  • Чтобы установить переменную, которую вы не используете set и вы не можете иметь пробелы до и после =.

Попробуй это:

var=$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)
echo $var

Вы дали мне представление об этом для убийства процесса :). Просто хром на любой процесс, который вы хотите убить.

Попробуй это:

VAR=$(ps -ef | grep -i chromium | awk '{print $2}'); kill -9 $VAR 2>/dev/null; unset VAR;

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

awk '/^password/ {print $2}'

awk может легко заменить любую текстовую команду, например Cut, Tail, WC, TR и т. д.и особенно несколько команд grep, передаваемых друг за другом.то есть

grep some_co.mand | a | grep b ... to | awk '/a|b|and so on/ {some action}.

Попробуйте создать переменную, приходящую от Vault / Hashicorp, при использовании переменных шаблона Packer, например:

BUILD_PASSWORD=$(vault read secret/buildAccount| grep ^password | awk '{print $2}')
echo $BUILD_PASSWORD

Вы можете к тому же с grep ^user

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top