awk оценивает переменную в выражении

В качестве альтернативы, если вы обнаружите, что снова и снова запускаете одни и те же команды, вы можете поместить их в скрипт:

$ echo "!123 && !124 && !125" > my_cool_script.sh
$ chmod +x my_cool_script.sh
$./my_cool_script.sh
2
07.06.2021, 13:20
2 ответа

Используйте блок BEGIN:

.
awk -v n="$number" 'BEGIN {FS=" " n ": |@"}'

Так твоим стать:

vth=$(echo "$inn" | awk -v n="$number" 'BEGIN {FS=" " n ": |@"} {print $2}')
4
28.07.2021, 11:26

это скорее похоже на проблему с оболочкой, вы пробовали.. ?

vth=$(echo "$inn" | awk -F ' '"$number"': |@' '{print $2}')
  • убедитесь, что ваша оболочка является bash (например. первая строка#!/bin/bash)
  • если вам не нужно $innв другом месте, используйтеvth=$( ip ad |... )
  • Я не могу воспроизвести @в результатеip a s(илиip ad)

чтобы перехватить номер имени сетевого интерфейса $numberя бы использовал

vth=$(ip a s | awk -F'[: @]' -v n="$number" '$1 == n { print $3 ; exit; }' )

Обратите внимание, что результат ip a sне предназначен для синтаксического анализа.

в ipесть опция -jдля создания json-скрипта, который может быть проще анализировать с помощью утилиты jq.

4
28.07.2021, 11:26

Теги

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