🖥

bash / sh | function からの脱出 ( 関数は変数を閉じ込めない )

2023/08/26に公開

検証コード

man='CATCH ME' # => 1. function の外で変数を定義しても

function jail() {
  echo $man # => 1. 変数は侵入する
  echo $1
  hope='CAN' # => 2. functionの中で変数を定義しても
}

jail 'IF YOU'

echo $hope # => 2. 変数は脱出する

echo $1 # => 3. こいつは脱走できない

結論

この監獄は脆い。

変数閉じ込める方法

local を宣言すること。

hope='NOT FOUND'

function jail() {
  local hope='FOUND'
}

echo $hope # => NOT FOUND

環境

  • sh 3.2

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2016-06-17

Discussion