Bash: что такое присваивание `a =` определено?

Я бы сказал, что вы не жадничаете и не используете RAID 1. Это также должно дать вам больше возможностей, когда вы хотите расширить свою файловую систему.

Вместо того, чтобы использовать один диск в качестве диска ОС, также поместить ОС на том рейда?

Возможно вариант 3, 3-стороннее зеркало? не каламбур. ;o)

Как вы планируете организовать RAID? Аппаратное или программное обеспечение?

0
27.04.2017, 11:54
2 ответа

Это пустая строка.

Это то же самое, что и:

a=''

Или

a=""

Или

a=$''

Или, если это имеет значение:

a=''""$''

Те '', "", и $'...' заключают в кавычки операторы оболочки. Когда вы делаете:

a=''

Вы присваиваете $a не строку, состоящую из двух одинарных кавычек, а пустую строку. Эти '' лишние, так как внутри них ничего нет, но это может сделать ваш код немного более разборчивым (пояснить, что вы действительно намеревались присвоить пустую строку).

Чтобы назначить литерал '' на $a, вам нужно будет заключить в кавычки такие специальные символы, как:

a="''" a=\'\' a=$'\'\'' a="'"\'

Ваша тестовая команда недействительна. В

[ $a = ]

Поскольку вы забыли заключить в кавычки $a, оператор split+glob применяется к $a. Поскольку $a пусто (но это было бы то же самое, если бы оно содержало только пробелы или новые строки со значением по умолчанию $IFS), это приводит к тому, что в [ команда.

Таким образом, все аргументы [ получают [, = и ]. Для [ это проверка, чтобы определить, является ли = непустой строкой и возвращает ли она true.

Здесь вам нужно передать эти аргументы команде [:

  1. [
  2. содержимое $a, для которого вам нужна "$a"
  3. =
  4. пустая строка. Для чего вам нужно '' или ""...Отсутствие передачи будет означать, что аргумент [] не передается, поэтому 4-й аргумент будет закрывающим .
  5. ]

Так должно быть:

if [ "$a" = '' ]; then echo '$a is empty'; fi

Или:

if [ -z "$a" ]; then echo '$a is empty'; fi
5
28.01.2020, 02:19

Переменная a равна пустой строке.

a=

if [ "$a" -eq "" ]; then echo 'good'; fi

Вывод:

$ . tst.sh  
good

И для этого кода:

a=

if [ -z "$a" ]; then echo 'good'; fi

Вывод тот же.

0
28.01.2020, 02:19

Теги

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