Bash: если имя переменной является специфическим шаблоном - PullRequest
0 голосов
/ 14 марта 2019

В bash я хочу проверить, содержит ли имя переменной определенный шаблон символов, например "abc", и если оно истинно, оно должно отображать переменную. Предпочтительно в виде цикла if. Итак:

abc=1

или

opabc=1

должен повторить "1" но:

cba=1

ничего не должен делать.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Не могли бы вы попробовать следующий, чистый способ bash.Пожалуйста, дайте скрипту соответствующие разрешения и запустите его, например: ./script.ksh или около того.Также я написал условие else, чтобы напечатать оператор типа string NOT found и т. Д., Если вы не хотите печатать что-либо, вы можете удалить часть else из этого (хотя это НЕ хорошая практика программирования, когда у нас нетправильные утверждения, печатные заявления на любых контрольных точках всегда полезны для любого вида устранения неполадок ИМХО).

cat script.ksh
var="abc=1"
val="${var%=*}"
val_field="${var#*=}"
if [[ "$val" =~ "abc" ]]
then
   echo "$val_field"
else
   echo "String abc NOT found."
fi

ИЛИ (согласно комментарию @Benjamin W. добавив его хорошее предложение здесь в качестве альтернативы сейчас)

cat script.ksh
var="abc=1"
IFS='=' read -r val val_field <<< "$var"
if [[ "$val" =~ "abc" ]]
then
   echo "$val_field"
else
   echo "String abc NOT found."
fi
0 голосов
/ 14 марта 2019

Полагаю, вы сканируете какой-то файл конфигурации.

awk -F= '$1~/abc/ {print $2}' input.cfg

Разбейте ввод по знакам =.Если поле 1 содержит abc, выведите поле 2.

$ awk -F= '$1~/abc/ {print $2}' <<< 'abc=1'
1
$ awk -F= '$1~/abc/ {print $2}' <<< 'opabc=1'
1
$ awk -F= '$1~/abc/ {print $2}' <<< 'cba=1'
$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...