s -гвоздь представляет собой значительно улучшенную альтернативу mailx
, которая,среди многих других улучшений позволяет указать SMTP-сервер в командной строке.
напр.
s-nail -S "smtp=smtp://remote-server:port" < message.txt
Он даже поддерживает зашифрованный SMTP (с использованием STARTTLS, SMTPS или SUBMISSION )и SMTP AUTH. Подробности см. в man s-nail
.
s-nail
доступен в предварительном -пакете для нескольких дистрибутивов Linux (, например. в дебиане apt-get install s-nail
.
"Нулевая строка" означает "нулевая длина (пустая )строка". См., например. определение POSIX "пустой строки" . Это означает, что не существует строки нулевой длины, отличной от -null.
Однако существует такая вещь, как неустановленная переменная.
var=''
unset uvar
Теперь есть разница между var
и uvar
после запуска приведенного выше кода. Например, ${var-hello}
заменится на пустую строку, поскольку var
установлено, а ${uvar-hello}
заменится на hello
, поскольку uvar
не установлено. Аналогично, ${var+hello}
будет заменено на hello
, так как var
установлено, а ${uvar+hello}
будет заменено на пустую строку, поскольку uvar
не установлено (см. раскрытие стандартных параметров)
В bash
можно также использовать тест -v
, чтобы проверить, установлена ли переменная или нет:
if [ -v variable ]; then
echo variable is set
fi
Опять же,«установленная, но пустая» переменная отличается от «неустановленной» переменной. Строка (содержимое переменной )не может быть нулевой и в то же время иметь ненулевую -длину.
В других языках массив символов может содержать нулевые байты (\0
), что означает, что у вас может быть массив, начинающийся с нулевого байта, а затем содержащий некоторый текст после этого (, заканчивающийся другим нулевым байтом ). Когда это интерпретируется как строка , эта строка будет иметь нулевую длину, но содержимое массива не будет пустым.
Однако большинство оболочек (, кроме zsh
), не допускают использование нулевых байтов в переменных.