@celovec

Как сформировать if условие в bash?

MSG переменная текст в которой нужно отслеживать.
Например: speed 22
if [[ "${MSG//[^a-z ]/}" == "speed " ]]; then
echo "СКОРОСТЬ = ${MSG//[^0-9]/}"; 
end

Здесь все работает, меня все устраивает.
А как сформулировать такой if:
Пример: car Audi
if [[ "${MSG//[^????????/}" == "car " ]]; then
echo "Модель = ?????"
end

Помогите пожалуйста в echo вывести модель.
  • Вопрос задан
  • 1229 просмотров
Решения вопроса 1
celovec

вот пример
- кстати работает как на баш так и на аш ( альпин)
#!/bin/bash
# или !/bin/sh в докере на apline 
MSG='port 123'
if [[ "${MSG//[^a-z ]/}" == 'port ' ]]; then
  echo "PORT = ${MSG//[^0-9]/}"; 
fi

MSG='host mysql_db'
if [[ "${MSG// [a-z_]*/}" == 'host' ]]; then
  echo "HOST = ${MSG//host /}"; 
fi

получим
PORT =  123
HOST = mysql_db
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AlexeyKolodchenko
@AlexeyKolodchenko
sudo cat /dev/ass | grep “the Adventure”
celovec, текст в переменной всегда из двух слов?
Используйте псевдомассивы:

example@example:~$ MSG=( speed 22 )
example@example:~$ if [[ "${MSG[0]}" == "speed" ]]; then echo "Скорость = ${MSG[1]}"; fi
Скорость = 22
example@example:~$ MSG=( car AUDI )
example@example:~$ if [[ "${MSG[0]}" == "car" ]]; then echo "Авто = ${MSG[1]}"; fi
Авто = AUDI
example@example:~$ MSG=(car AUDI)
example@example:~$ echo ${MSG[1]}
AUDI
example@example:~$ MSG+=("test text")
example@example:~$ echo ${MSG[2]}
test text
example@example:~$ echo ${MSG[@]}
car AUDI test text
example@example:~$
example@example:~$ MSG[1]="BMW"
example@example:~$ echo ${MSG[@]}
car BMW test text
example@example:~$
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
echo "Модель = ${MSG//car /}"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы