Оболочка, как назначить результат проверки строки в переменной - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть сценарий оболочки:

#!/bin/bash
server=$1
modules=$2
is_selected= if [[ $modules== *"myModule"* ]]; then true else false fi

Я хочу, чтобы, если условие $modules== *"myModule"* проверено,

, тогда переменная is_selected получает true , иначе false

Как мне настроить его в одну строку?

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вам нужна подстановка команды, и ваша команда должна вывести строку true или false.

is_selected=$( if [[ $modules == *"myModule"*; then echo true; else echo false; fi)

Или поместить назначение в if оператор:

if [[ $modules == *myModule* ]]; then is_selected=true; else is_selected=false; fi

, который имеет преимущество, заключающееся в том, что для подстановки команд не требуется подоболочка (и, вероятно, новый процесс).

Или используя предложение из комментариев, инициализируйте переменную в false, затем установите ее в true, если совпадение выполнено успешно.

is_selected=false; [[ $modules == *myModule* ]] && is_selected=true
0 голосов
/ 24 февраля 2020

Запустите подстановку команды и получите желаемый результат:

is_selected=$(if [[ "$modules" == *"myModule"* ]]; then echo true; else echo false; fi)
...