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

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...