Czy istnieje odpowiednik powłoki preg_match PHP?Powłoki równoważne php preg_match?
Próbuję wyodrębnić nazwę bazy danych z tego ciągu w skrypcie powłoki.
Używając preg_match w PHP mogłem po prostu zrobić coś takiego.
preg_match('define(\'DB_NAME\','(.*)'\'\)',$matches);
echo $matches[1];
Jak mogę zrobić to samo w skrypcie powłoki?
Dzięki za szybką odpowiedź. Stackoverflow jest niesamowity. Czy masz szansę wyjaśnić, jak działa eval "result = ($ {t ## *,}"? –
grasz z tym, że podstawienie wraca z '); na końcu jest to miłe, ale nie dość skalabale (tzn. łatwe do modyfikacji), ale ładne ... –
$ {t ## *,} usuwa ciąg prefiksu przez ",", patrz sh (1) lub bash (1). To pozostawia "somedb"); radzić sobie z tym, więc dodałem wynik = (z przodu z evalem, który pozbył się cytatów i wykorzystał fakt, że bash pozwala ci wykonywać przydziały z = (...). CB ma rację, ale przeoczył najgorsza część tego wyrażenia: myślę, że to bashizm, i nie działałby w powłoce posix.) – DigitalRoss