$IFS
комментарий взломать
Этот хак использует расширение параметра на $IFS
, которое используется для разделения слов в командах:
$ echo foo${IFS}bar
foo bar
Аналогично:
$ echo foo${IFS#comment}bar
foo bar
Используя это, вы можете поместить комментарий в командную строку с продолжением:
$ echo foo${IFS# Comment here} \
> bar
foo bar
но комментарий должен быть до продолжения \
.
Обратите внимание, что расширение параметра выполняется внутри комментария:
$ ls file
ls: cannot access 'file': No such file or directory
$ echo foo${IFS# This command will create file: $(touch file)}bar
foo bar
$ ls file
file
Редкое исключение
Единственный редкий случай, когда это не получается, если $IFS
ранее был запущен с точным текстом , который удаляется расширением (то есть после символа #
):
$ IFS=x
$ echo foo${IFS#y}bar
foo bar
$ echo foo${IFS#x}bar
foobar
Обратите внимание, что в конце foobar
нет пробела, иллюстрирующего проблему.
Поскольку $IFS
по умолчанию содержит только пробелы, крайне вряд ли вы столкнетесь с этой проблемой.
Благодарим за комментарий @ pjh , который вызвал этот ответ.