Linux Shell Script - Сравнение строк с подстановочными знаками
Я пытаюсь проверить, является ли строка частью другой строки в оболочке script (#! bin/sh).
Теперь у меня есть код:
#!/bin/sh
#Test scriptje to test string comparison!
testFoo () {
t1=$1
t2=$2
echo "t1: $t1 t2: $t2"
if [ $t1 == "*$t2*" ]; then
echo "$t1 and $t2 are equal"
fi
}
testFoo "bla1" "bla"
Результат, который я ищу, заключается в том, что я хочу знать, существует ли "bla" в "bla1".
Спасибо и любезны,
UPDATE:
Я пробовал использовать функцию "contains", как описано здесь: Как вы определяете, содержит ли строка строку в сценариях Unix shell?
Как и синтаксис String содержит в bash
Однако они кажутся несовместимыми с обычной оболочкой script (bin/sh)...
Справка
Ответы
Ответ 1
В bash вы можете написать (обратите внимание, что звездочки находятся вне кавычек)
if [[ $t1 == *"$t2"* ]]; then
echo "$t1 and $t2 are equal"
fi
Для/bin/sh оператор =
предназначен только для равенства, а не для сопоставления с образцом. Вы можете использовать case
, хотя
case "$t1" in
*"$t2"*) echo t1 contains t2 ;;
*) echo t1 does not contain t2 ;;
esac
Если вы специально нацеливаете Linux, я бы предположил наличие/bin/ bash.