Как присвоить ненулевую строку нулевой длины

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.

0
12.06.2019, 20:20
1 ответ

"Нулевая строка" означает "нулевая длина (пустая )строка". См., например. определение 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), не допускают использование нулевых байтов в переменных.

3
28.01.2020, 02:22

Теги

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