Нужно в текстовом файле найти регулярное выражение (regexp=«bar») и показать строку (foo), предшествующую той, которая содержит это выражение.
Помогите, пожалуйста.
Вопрос только для терпеливых.
На форуме уже обсуждалось, хочу только уточнить: это нормальная ситуация?
Суть вопроса: при использовании в shell-скриптах команды cd она работает, как положено, например:
mkdir d1
cd d1
touch f1
создаст в текущем каталоге подкаталог d1, перейдет в него и создаст там файл f1.
Но после завершения работы скрипта текущим каталогом останется прежний каталог.
При этом команда cd в консоли нормально меняет текущий каталог.
Сменить текущий каталог в консоли при помощи скрипта можно либо так:
. scriptname
# или тоже самое:
source scriptname
или так:
cd d1; bash
В последнем случае работа скрипта (т.е. дочернего процесса) не будет завершена, чтобы его завершить надо выполнить 'exit' или нажать Ctrl+D, текущий каталог сменится на первоначальный.
В принципе, все понятно про родительский и дочерний процесс, вот толковое объяснение.
Обратил внимание, что иногда при запуске скриптов, оболочка меняет текущий каталог. Возможно, это связано с импортом других файлов через source.
Ниже приведен php-код страницы, которая обрабатывает форму обратной связи на сайте (на мыло отправляется письмо).
Проблема: если капча введена неправильно, выводится сообщение «Капча введена неверно» и все, но письмо все равно отправляется.
По идее, работа скрипта должна прерываться командой exit.
Возможно, ошибка в использовании exit, возможно в конструкции if elseif else.
Помогите, пожалуйста.
if ($_POST['kapcha'] != $_SESSION['rand_code'])
{
echo "Капча введена неверно";
exit(1);
}
elseif ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
После этого пользовательские скрипты, лежащие в ~/bin запускаются только из терминала как команды, а в программах dmenu_run и gmrun нет.
После перезагрузки изменение не сохраняется.
Пытался (по отдельности) записывать строки:
export PATH=/home/myname/bin:$PATH
и
PATH=/home/myname/bin:$PATH
в файлы (по очереди):
/etc/profile.local
/etc/profile
/etc/environment
~/.bashrc
~/.bash_profile
~/.profile
~/.xinitrc
в файл /etc/login.defs: