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

【ハーネスエンジニアリングを始める前に】gpt-oss:20b の入出力データから、LLMの動作を理解する

  1. はじめに 最近は、 Cursor や Antigravity などのAIエージェント前提の統合開発環境や、 Claude Desktop や Codex アプリ などのPC上のオブジェクト操作が可能なデスクトップアプリ、 Open Claw といったPC全体の...