Добрый день!

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

Ответить