Почему двойные двойные кавычки заставляют строку работать как функцию?
Простая функция получает два аргумента и добавляет and
затем распечатайте их.
function myprint(){ echo "$1 and $2";}
Оно работает.
myprint xx yy
xx and yy
Это строка,bash разбери ее отдельно.
"myprint xx yy"
bash: myprint xx yy: command not found
Почему двойные двойные кавычки заставляют строку работать как функцию?
""myprint xx yy""
xx and yy
1 ответ
Решение
Ваши "двойные двойные кавычки" на самом деле не являются вложенными. Дважды двойная кавычка открывается и закрывается сразу же.
""myprint xx yy""
^^ this is one pair of quotes with empty content
^^ this is anther pair with empty content
^^^^^^^^^^^^^^^ this is not quoted at all
В результате ""myprint
это команда с именем: пустая строка, соединенная с "myprint", это разрешает myprint
функция; и последний аргумент - это строка "yy", соединенная с пустой строкой.
Таким образом, вы получите без кавычек myprint xx yy
, Вся оригинальная команда ведет себя как таковая.