#!/bin/bash
for i in 1 2 3 4
do
# {
# local i ##gives error local: can only be used in a function
for i in 1 2 3
do
echo "inner loop ----- $i"
(( i++ ))
done
# }
echo $i
done
Outout:
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
Можно ли сделать переменную внутри вложенной для локального цикла.
Да, но только с помощью функции.
Поскольку встроенная
local
функция может существовать только внутри функции, нам нужно предоставить функцию, чтобы переменнаяi
изменяла область видимости с глобальной на локальную:источник
declare
также делает их локальными{ }
не достаточно. Да, объявление делает var локальным внутри функции .