Если нужно узнать содержится ли в некой строке (пускай она хранится в переменной) некая подстрока (другая переменная), например, присутствует ли некий путь $DIR в переменной $PATH, то, есть как минимум три способа это сделать.
Способ 1:
echo "$PATH" | /bin/egrep -q "(^|:)$DIR($|:)"
TEST=$?
Или чуть проще:
/bin/egrep -q "(^|:)$DIR($|:)" <<< "$PATH"
TEST=$?
Достоинства: простота, элегантность.
Недостатки: необходимость использования пусть и стандартной, но внешней утилиты.
Способ 2 (наш антисимметричный ответ чемберлену):
[ "$PATH" = "$DIR" -o \
"${PATH##$DIR:}" != "$PATH" -o \
"${PATH%%:$DIR}" != "$PATH" -o \
"${PATH/:$DIR:}" != "$PATH" ]
TEST=$?
Достоинства: "хм...".
Недостатки: "о, это чёэто ваще такое тут!?"
В общем достоинства этого способа противоположны недостаткам первого. С недостатками, как видно, аналогично.
Способ 3 (попытка примирения):
[[ "$PATH" == "$DIR" || "$PATH" == "$DIR":* || "$PATH" == *:"$DIR" || "$PATH" == *:"$DIR":* ]]
TEST=$?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment