bash スクリプトの local 文ではまった
コマンドを実行し、出力を変数に代入する。その結果 (戻り値) を使用するコードではまりました。例えば下のような使い方。retval=`command | grep keyword`if [ $? -ne 0 ]; then return 1このコードは想定通りの動作をします。しかし、代入と local 宣言が 1 文で行われる場合、結果変わります。例えば、下のスクリプトを実行すると結果はどうなるか。#!/bin/bashfunction f(){local foo=`hoge`echo $?bar=`hoge`echo $?}f結果はこうなります。# ./local.sh./local.sh: line 5: hoge: command not found0./local.sh: line 8: hoge: command not found127local はコマンドなので、1 つ目のコマンドは 0 (成功) を返すのです。local コマンドと結果を見たいコマンドを分けると期待した動作になります。local foofoo=`hoge`echo $?
Emacs の便利なショートカットキー
覚えていない便利そうなショートカットキーのメモ。まずは単語系。1 語前進: M-f1 語後退: M-d次の単語を削除: M-d直前の単語を削除: M-Delリドゥもよく使うので覚えておきたいです。リドゥ (redo): undo (C-/) 後、C-g し、C-_ (繰り返し実行可)その他、小技系。プログラミングに使えそうです。C-x C-t: 2 つの文を入れ替えるM-u: 単語全体を大文字(uppercase)にする (カーソルから右向きへ)M-l: 単語全体を小文字(lowercase)にする (カーソルから右向きへ)M-- M-u: 単語全体を大文字にする (カーソルから左向きへ)M-- M-l: 単語全体を小文字にする (カーソルから左向きへ)
<<