On 12/1/25 22:25, Alexander Lubyagin wrote:
01.12.2025 18:40, Leonid Krivoshein пишет:
echo "---" "$1"
это небезопасно, лучше так:
printf "%s %s\n" "---" "$1"
Небезопасно, потому что echo может быть внешней программой, и быть
подменена?
Потому что echo может воспринимать аргументы как опции, особенно, если
они идут в самом начале. И допускает бинарный вывод с "-e". То есть,
результат может быть не таким, как его ожидают. В зависимости от
аргументов и версии оболочки, неожиданная реакция может быть и на такие
аргументы, как --help или --version.
Кстати по этой причине многие программы допускают отделение свободных
аргументов от параметров необязательным отбойником "--". В этом случае,
чему бы не была равна переменная, она будет воспринята как свободный
аргумент. Например:
name="-x my-binary"
:> "$name"
chmod +x -- "$name"
ls -- "$name"
Те, кто привык писать chmod +x $name или ls $name, получат неприятный
сюрприз в этом месте. :-)
Хотя echo встроена во все оболочки, её можно переопределить, как любое
другое имя. Например, так:
echo() {
: Do nothing
}
--
WBR, Leonid Krivoshein.
_______________________________________________
devel-newbies mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/devel-newbies