LoginSignup
13
15

More than 5 years have passed since last update.

shellで配列/変数スコープ

Posted at

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

読み込み専用変数だから書き込めないよ!って怒られる

13
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15