シェルで関数のトレース表示(2)
Ubuntoのtypeset -fx 関数名
でトレース表示されない件はよくわからなかった。
set -x
で関数もトレース表示されるから、
Ubuntoではset -x
かsh -x
で実行することにしよう。
Hp-UXは関数内にset -x
がないとトレース表示されないから
いままでは、読み込むファイルの先頭でvar=$-
と、設定を変数に入れて
各関数でset -$var
と設定していた。
これでsh -x file
と実行すると、関数内でset -x
が実行されて
トレース表示される。
でも全部の関数にset -$var
を入れるもの、あまりきれいじゃない気がする。
HP-UXのtypeset -ft
は関数ごとに設定できるから良いんだけど、
カレントの環境しか設定できないから、
sh -x file
みたいにファイルを実行した場合はトレース表示されない。
スクリプトファイルの中に全部の関数をtypeset -ft
する関数をつくって
mainの処理を実行する前にその関数を呼べば良いのかもしれないけど、いまいち。
DEBUGをtrapしてもできるかもしれないけど、
トレース表示だけのための処理を書くのも、うまくない気がする。
難しい。