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 件のコメント:

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...