steeldriver опубликовал ответ в качестве комментария, поэтому я публикую его как ответ. echo "FLAG" | base64
выходы RkxBRwo=
, поэтому ваша команда
grep -nr `echo "FLAG" | base64`делает
grep -nr RkxBRwo=Но, судя по тому, что вы показали, ваш файл
test.txt
не содержит RkxBRwo=
; он содержит RkxBR
(, за которым следуют другие символы ). Если вы хотите найти свои файлы для первых 5 символов кодировки base64 FLAG
, делать
grep -nr `echo "FLAG" | base64 | cut -c1-5`
Страница руководства говорит о set -o ignoreeof
, что:
The effect is as if the shell command 'IGNOREEOF=10' had been executed
На самом деле это буквально:
$ echo $IGNOREEOF
$ set -o ignoreeof
$ echo $IGNOREEOF
10
Делая наоборот, set +o ignoreeof
сбрасывает IGNOREEOF
, а SHELLOPTS
кажется, что содержит ignoreeof
, когда IGNOREEOF
установлено (независимо от того, установлено ли оно через присвоение ему, илиset -o ignoreeof
). (Я тестировал с Bash 4.4.)
Переменная нижнего регистра ignoreeof
, вероятно, не делает ничего особенного.
Как ни странно, строчная переменная ignoreeof
кажется своего рода недокументированным эквивалентом прописной. Таким образом, изменение любого из них изменяет количество требуемых EOF, что, я полагаю, и есть то, что вы нажмете во втором примере.
Согласно сопровождающему , строчная
exists only for backwards compatibility; it's deprecated and has been for years
В общем, set -o
флаги и переменные — разные вещи.