В качестве альтернативы, если вы обнаружите, что снова и снова запускаете одни и те же команды, вы можете поместить их в скрипт:
$ echo "!123 && !124 && !125" > my_cool_script.sh
$ chmod +x my_cool_script.sh
$./my_cool_script.sh
Используйте блок BEGIN
:
awk -v n="$number" 'BEGIN {FS=" " n ": |@"}'
Так твоим стать:
vth=$(echo "$inn" | awk -v n="$number" 'BEGIN {FS=" " n ": |@"} {print $2}')
это скорее похоже на проблему с оболочкой, вы пробовали.. ?
vth=$(echo "$inn" | awk -F ' '"$number"': |@' '{print $2}')
#!/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
.