#!/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
出力:
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
ネストされたforループローカル変数内に変数を作成することは可能ですか?
ベストアンサー1
ネストされたforループローカル変数内に変数を作成することは可能ですか?
はい、しかし1つの機能のみを使用します。
組み込み機能は関数内にのみ存在できるため、変数の範囲をグローバルからローカルに変更するlocal
関数を提供する必要があります。i
#!/bin/bash
internalfunction () {
local i ### Works as is inside a function
for i in 1 2 3; do
echo "inner loop ----- $i"
(( i++ ))
done
}
for i in 1 2 3 4; do
echo $i
internalfunction
done
$ ./script.sh
1
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
2
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
3
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3
4
inner loop ----- 1
inner loop ----- 2
inner loop ----- 3