Я только что назначил переменную, но echo $ variable показывает что-то еще

Вот серия случаев, когдаecho $var может показать другое значение, чем то, что было только что назначено. Это происходит независимо от того, было ли присвоенное значение «двойными кавычками», «одинарными кавычками» или без кавычек.

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

Звездочки

Ожидаемый результат/* Foobar is free software */, но вместо этого я получаю список имен файлов:

$ var="/* Foobar is free software */"
$ echo $var 
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...

Квадратные скобки

Ожидаемое значение[a-z], но иногда я получаю одно письмо вместо этого!

$ var=[a-z]
$ echo $var
c

Перевод строки (переводы строки)

Ожидаемое значение - это список отдельных строк, но вместо этого все значения находятся в одной строке!

$ cat file
foo
bar
baz

$ var=$(cat file)
$ echo $var
foo bar baz

Несколько пробелов

Я ожидал тщательно выровненный заголовок таблицы, но вместо этого несколько пробелов либо исчезают, либо объединяются в один!

$ var="       title     |    count"
$ echo $var
title | count

Вкладки

Я ожидал двух значений, разделенных табуляцией, но вместо этого я получил два значения, разделенных пробелом!

$ var=key\tvalue'
$ echo $var
key value

Ответы на вопрос(6)

Ваш ответ на вопрос