Mailx не отправляет электронную почту в скрипте bash [дубликат]

Сначала проверьте ваше соединение.

Затем, если вы хотите получить точное значение из базы данных, тогда вы должны написать:

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName =`$usernam`");

Или вы хотите получить LIKE, то вы должны написать:

$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
5
задан tripleee 13 November 2015 в 07:09
поделиться

5 ответов

Символ ! используется для расширения истории csh.

Если вы не используете эту функцию, set +o histexpand (aka set +H) отключает это поведение. Это отключено для скриптов, но часто разрешено для интерактивного использования.

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

echo "#!$SHELL"  # oops, history expansion breaks this

на

 echo '#!'"$SHELL"

(обратите внимание на соседние строки с одной кавычкой и с двойными кавычками; после того, как оболочка будет выполнена с этим, кавычки будут удалены, а строка #! будет выводиться рядом со значением переменной SHELL без пробелов между ними) или рядом других общих обходных путей, таких как

 printf '#!%s\n' "$SHELL"
9
ответ дан tripleee 24 August 2018 в 04:39
поделиться

В моем случае все команды работают. Возможно, вы можете указать свою среду.

$ echo "\#\!"
\#\!
$ echo "#!"
echo "#"
#
$ echo "#!"
echo "#"
#
$ echo $BASH_VERSION
3.2.48(1)-release
1
ответ дан devanand 24 August 2018 в 04:39
поделиться

По умолчанию bash поддерживает совместимое с csh историческое расширение.

В bash

echo #!

будет печатать только новую строку, так как # начинает комментарий.

В

echo "#!"

# является частью строки, начинающейся с ". Такие строки все еще проверяются bash для специальных символов. ! является специальным символом, если за ним следует любой другой текст.

-bash: !": event not found

В этом случае bash ожидает, что токен !" ссылается на предыдущую команду в истории оболочки, начиная с ", и не находит его. Все это само по себе ! не вызывает такого поведения:

$ echo \# !
# !

$ echo fee ! fie
fee ! fie

Наконец,

$ echo !echo

создает две строки, первая строка выводится оболочкой, чтобы показать, как шаблон выше расширяется до:

echo echo '# !'

, тогда как вторая строка является результатом выполнения расширенной команды: echo #!


См. также: Страница пользователя Bash в История Расширение

7
ответ дан Henk Langeveld 24 August 2018 в 04:39
поделиться

Другим обходным решением может быть добавление дополнительного пространства после «!» :

# echo "#! "
#!
1
ответ дан JG_ 24 August 2018 в 04:39
поделиться
echo '#!'

В принципе, с двойными кавычками ("), иначе говоря, «слабым цитированием», Bash делает некоторые странные вещи со строкой, например, подстановкой переменных. С одиночным (') aka «сильным цитированием» строка берется буквально.

См., Например, здесь для более подробного объяснения цитирования.

3
ответ дан Staven 24 August 2018 в 04:39
поделиться
Другие вопросы по тегам:

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