Shell, эквивалентный из php preg_match?

Нет никакого смысла в ловле Ошибка .

Ошибки используются, чтобы указать, что что-то пошло действительно неправильно в Вашем приложении, и оно должно быть перезапущено.

, Например, одна распространенная ошибка

java.lang.OutOfMemoryError

существует НИЧТО , можно сделать, когда это происходит. Является уже слишком поздним, JVM исчерпала все свои опции получить больше памяти, но это невозможно.

См. этот другой ответ для понимания больше о три вида исключений .

6
задан Andrew Hopper 15 September 2009 в 04:29
поделиться

5 ответов

$ t="define('DB_NAME', 'somedb');"
$ echo $t
define('DB_NAME', 'somedb');
$ eval "result=(${t##*,}"
$ echo $result
somedb
$ 

В этом есть bashism, и хотя он будет работать в большинстве нестандартных сред, чтобы придерживаться функций оболочки posix, используйте более громоздкую версию:

t="define('DB_NAME', 'somedb');"
r="${t##*,}"
r="${r%);*}"
r=`eval echo $r`
2
ответ дан 11 December 2019 в 00:40
поделиться

How about:

$ str="define('DB_NAME', 'somedb');"
$ php -r "$str echo DB_NAME;"
somedb
2
ответ дан 11 December 2019 в 00:40
поделиться

This might do what you want

sed -e "/DB_NAME/ s/define('DB_NAME', '\(.*\)');/\1/" /path/to/file/to/search.txt
1
ответ дан 11 December 2019 в 00:40
поделиться

что-то вроде этого:

MATCHED=$(sed -n "s/^define('DB_NAME', '\(.*\)')/\1/p" file.php)

if [[ -n ${MATCHED} ]];then
  echo $MATCHED
else
  echo "No match found"
fi
0
ответ дан 11 December 2019 в 00:40
поделиться

просто используйте конструкцию case / esac

mystring="define('DB_NAME', 'somedb');"
case $mystring in
    *define*DB_NAME*) 
      dbname=${mystring%\'*}
      dbname=${dname##*\'}
      echo "$dbname" ;;
esac
0
ответ дан 11 December 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: