shellで知らなかったことがあったのでメモ
配列
配列が作れることを知らなかった
declare
というビルドインコマンドの-a
で配列を定義できる
declare -a array=(hoge fuga moge)
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
出力結果
hoge
fuga
moge
出来た!✧\\ ٩( 'ω' )و //✧
引数を配列にする
実行時に引数で与えた値を配列に格納する
declare -a array=("$@")
for word in ${array[@]}; do
echo $word
done
実行結果
$ sh array_read.sh hoge huga moge
hoge
huga
moge
出来た
変数スコープ
shellはglobal変数しかないと思っていた
local
というビルトインコマンド(?)を使うことで
変数のスコープを限定することが出来る
global_val="グローバル変数"
func() {
global_val_in_func="関数内のグローバル変数"
local local_val="ローカル変数"
}
func
echo "グローバル変数出力:"$global_val
echo "関数内グローバル変数出力:"$global_val_in_fanc
echo "ローカル変数出力:"$local_val
実行結果
グローバル変数出力:グローバル変数
関数内グローバル変数出力:関数内のグローバル変数
ローカル変数出力:
local_val
は関数内でしか見ることが出来ない,便利!(?)
変数の操作を制限する
変数を読み込み専用にすることも出来る
readonly val="読み込み専用だよ!"
echo $val
val="書き込んでみるよ!"
echo $val
実行結果
読み込み専用だよ!
readonly.sh: line 5: val: readonly variable
読み込み専用変数だから書き込めないよ!って怒られる