Добрый день!
On 11/20/25 18:28, Alexander Lubyagin wrote:
Вот такой скрипт:
x=42
echo $x
foo() {
local x=43
echo $x
}
foo
echo $x
Интерпретатор Bash:
$ /bin/bash4 script
42
43
42
Интерпретатор Bash в режиме POSIX:
$ /bin/bash4 --posix script
42
43
42
То есть, в POSIX-режиме тоже поддерживаются локальные для функций
переменные.
Как же писать скрипт, после shebang в котором указан /bin/sh?
Полагаться ли на поддержку локальных переменных?
Зависит от целеполагания. Поддержка local появилась давно. Во многих
системах /bin/sh является симлинком на что-то, что совершенно не обязано
быть POSIX-compliant shell. Например, даже в старых альтах это был bash3
с поддержкой local. Проверяйте ash, используйте subshell ( ... ), если
так важна переносимость. По-моему, все, кто за неё радел, уже давно
забили на это дело и пользуются всеми прелестями башизмов. :-) Куда
важнее для правильного скриптования использовать shellcheck.
--
WBR, Leonid Krivoshein.
_______________________________________________
devel-newbies mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/devel-newbies