[newbies] Bash and POSIX - local variables
Leonid Krivoshein
klark.devel на gmail.com
Пт Ноя 21 00:44:27 MSK 2025
Добрый день!
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