#!/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
Czy możliwe jest, aby zmienna wewnątrz była zagnieżdżona dla pętli lokalnej?
Tak, ale tylko przy użyciu funkcji.
Ponieważ funkcja wbudowana
local
może istnieć tylko wewnątrz funkcji, musimy zapewnić funkcję, aby zmiennai
zmieniła zakres z globalnego na lokalny:źródło
declare
również czyni ją lokalną{ }
nie wystarczy. Tak, deklaracja czyni zmienną lokalną Wewnątrz funkcji .