Translate

2011年10月18日火曜日

シェル変数に!だけ入っている場合のif文評価に気をつけよう

今日はとっても基本的なUNIXシェルで引っかかってしまった..

あるサーバ(Linux)マシンで
パスワード有効期限をchageで指定して 運用しているのだけど、
パスワード有効期限を警告するメールを
直接ログイン出来ない状況でわからないものか、
いろいろGoogleってみたら 以下のサイトを見つけた。

パスワード変更していない日数



これさいわいとスクリプトをコピーして
実行させてみたのだけど、
 
[: =: unexpected operator

というエラーがでた。



..これは神様がズルすんなといっているのかも..

やっぱり自分で汗かかないとダメか..


で、調べてみると
 /etc/shadowの2カラム目を変数pwdに格納し'!'と比較している部分があって


if[ "$pwd" != '!' ...

という行の評価でエラーに成ってることがわかった。


!ああ
"$pwd"が!に置換されて、
シェルが


if[ ! != '!' ...

を評価しようとしててあのエラーがでてたのか..


なので、
 
if[ " $pwd" != ' !' ...

のように
$pwdと!の前に半角スペース1個いれてみたら
うまくいった..
#いやー、べったべたな対処法だ..


こういう単純な所で引っかかるとは...

忘れないように
ブログに載せとこっと。


p.s.
じつはこの記事が私の書いたブログで
最もアクセス数の少ない記事です。
ワースト2がGoogle waveのロボット。

..いや、特に意味はないですけど..

0 件のコメント:

o1-previewにナップサック問題を解かせてみた

Azure環境上にあるo1-previewを使って、以下のナップサック問題を解かせてみました。   ナップサック問題とは、ナップサックにものを入れるときどれを何個入れればいいかを計算する問題です。数学では数理最適化手法を使う際の例でよく出てきます。 Azure OpenAI Se...