2015年03月05日(木) [長年日記]
■ [shell] bashのset -eがローカル変数への代入で効かない
bashスクリプトについてメモ。先に前置き。
- 組み込みコマンドsetを使うとエラー発生時にスクリプトが終了するようにできる。
- 関数内で組み込みコマンドlocalを使うとローカル変数を作れる。
で、
a=`command`
のように代入するとcommandがエラーになった時にそこでスクリプトが終了するが、
local a=`command`
のように代入するとcommandがエラーになってもスクリプトが終了しないということを知った。後者は、commandがエラーになってもlocalは成功して終了ステータスが0になってしまうのだと思う。対処は
local a a=`command`
のように書くこと。実験スクリプトと出力結果をメモ。
#!/bin/bash set -e function f() { local a=`ls fff` echo "f: $a $?" } function g() { local a a=`ls ggg` echo "g: $a $?" } f g
ls: fff にアクセスできません: そのようなファイルやディレクトリはありません f: 0 ls: ggg にアクセスできません: そのようなファイルやディレクトリはありません
2015年03月10日(火) [長年日記]
■ [work][life] 確定申告に行く 2015
今年は遅くなってしまった。去年
横の方にも出入り口があることを知った。そっちを利用したほうがプレハブまでが近い。来年はそちらの出入り口を利用したい。
と書いたのを覚えていたので税務署の横の入り口から入ろうとしたら門が閉じられていて入れなかった。ちっ。いつもの入り口から入ると、毎年あったプレハブがなく提出所が建物内に変わっていた。そして建物の外まで大行列。列の先頭が見えないので不安だったが、建物内は存外に狭く、意外とすぐに順番が回ってきた。アルバイトという腕章を付けた人に提出しておしまい。
提出が遅くなると税務署が混むので来年は早めに行きたい。