IFS='\'
echo $var
# o/p is '(] {}$"
# \ converted to space. Why?
Поскольку вы сказали оболочке, что обратная косая черта является разделителем полей, и поскольку вы не указали $var
при выводе его, он подвергся разбиению слов на основе IFS.
echo "$var"
# o/p is '(]\{}$"
# special meaning of \ used, \ escapes \ $ and " RIGHT ?
Здесь вы процитировали $var
и, таким образом, разбиение слов не будет выполнено. Ваш вывод в точности соответствует тому, что вы сказали, что оболочка var
была равна. т.е. '(]\{}$"
var2="\\\\\""
echo $var2
# o/p is "
# \ converted to space. Why?
см. Первый ответ
# But ... var2="\\\\"" is illegal. Why?
Поскольку каждая пара обратных слешей составляет буквальный обратный слеш, и обратного слеша не осталось, чтобы вырваться из второй двойной кавычки. Оболочка не знает, что делать с 3 двойными кавычками.
echo "$var3" # \\\\
# Strong quoting works, though. Why ?
См. Второй ответ о разбиении слов
Обратите внимание , что вы также можете использовать строковый литерал синтаксиса $''
vis var=$'\'(]\{}$"'
, который потребует от вас только экранирования одинарной кавычки