Solarisのkshで確認。
とあるファイルを初期化するのに、たとえばこんな関数を作ったとする。
1: func() { 2: : > file 3: echo $? 4: }ここで、fileへの書き込みに失敗した場合、非ゼロの値がエコーされることを期待する。
しかし実際には何も表示されない。
$ func
ksh: file: 作成できません。
$
どうやら、組み込みコマンドのリダイレクションに失敗すると、その時点で関数から抜け出てしまうようである。
1: func2() { 2: /bin/true > file 3: echo $? 4: } 5: func3() { 6: (:) > file 7: echo $? 8: }外部コマンドを使うか、サブシェルにすることで期待した結果を得ることができる。
$ func2
ksh: file: 作成できません。
1
$ func3
ksh: file: 作成できません。
1
$
0 件のコメント:
コメントを投稿