Вот пример кода:
#!/bin/bash
while read fName ; do
filePvmLib="${fName}"
done <<< "$( find /bin -type f -iname "*bash*" 2>/dev/null )"
echo "Дочерняя fName=${fName}; Из родительского пространства filePvmLib=${filePvmLib};"Две переменные - filePvmLib и fName. После выхода из цикла fName "уничтожается". Как это правильно объяснить?
Если вызывается другой экземпляр Bash. filePvmLib создаётся и существует в "родительском", в "корневом" экземпляре Bash. Внутри цикла fName также доступна, существует для родителя на равне с filePvmLib, а по выходе fName уничтожается.
> #!/bin/bash
> while read fName ; do
> filePvmLib="${fName}"
> Как это правильно объяснить?Зачем это _объяснять_? ... ... Хотя... На!
$ while read fff; do echo "_${fff}_"; xxx=$fff; done < <(echo 1); echo f.$fff x.$xxx
_1_
f. x.1
$ while read fff; do echo "_${fff}_"; xxx=$fff; break; done < <(echo 1); echo f.$fff x.$xxx
_1_
f.1 x.1
$ _
> Зачем это _объяснять_?Я по работе использую. Понимать как работают свои инструменты - это правильное стремление. ИМХО.
Если совсем прямо - меня интересует стабильность результата работы этого кода. Интуитивно этот код не вызывает чувства неправильности. Можно придумать, почему логично именно так. Но полезнее(хотелось бы в идеале) таки узнать, что на самом деле.