Bluetooth-соединение Logitech M590

Да, пустая строка в этом контексте — это строка длины 0, вообще не содержащая ни одного байта. Вbash:

var=
var=''
var=""
var=$''
var=$""
var=$(true) # or any command that outputs nothing or only newline
            # characters
var=`true`
var=${null_or_unset_var}
var=''""$''$""$(true)"`true`"

Но также и в bash, как побочный эффект bash(, в отличие от zsh), не поддерживающего байты NUL в своих переменных (, поскольку он использует внутри строки C с разделителями NUL -):

var=$'\0'
var=$'\u0000'
var=$'\c@'
var=$'\x00'
var=$'\0\0\0\0\0'

Во всех этих случаях $varбудет установлено, но ничего не будет содержать (нулевую строку ). echo "${#var}"выведет 0, [ -z "$var" ]вернет true, а printf %s "$var"ничего не выведет.

После unset var(, но остерегайтесь ошибки/несоответствия bash, mkshи yash, где unsetможет показать версию $varиз внешней области вместо того, чтобы сбрасывать ее, если вы делая это из функции, вызванной из другой функции, которая объявила переменную local ), $varне имеющей значения, null или нет.

Однако $varпо-прежнему заменяется ничем (на нулевую строку ), если не включена опция nounset.Существуют и другие различия между неустановленными переменными и переменными, которым присвоено пустое значение :

.
  • ${var?}вызывает ошибку, когда $varне установлено
  • ${var+x}расширяется до x, если $varимеет любое значение (, даже нулевое)
  • ${var-x}расширяется до x, если $varне установлено
  • [[ -v var ]]возвращает false, если $varне установлено
  • если переменная помечена как export, то var=передается в окружении каждой команды, если она установлена, или не передается вообще в противном случае.
1
29.06.2019, 18:37
0 ответов

Теги

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