1

リモートホストの /etc/sudoers (## Expires 12122012) から行を取得し、date +%d%m%Y. 割り当てられた変数を表示すると両方の値が同じように見えますが、if ステートメントはそれらを一致として表示しません。スクリプトと出力は以下のとおりです。追加の echo ステートメントは、変数が実際に一致したことを確認するためにあります。

#!/bin/bash
TODAY=`date +%d%m%Y`
EXPIRES=`ssh -t hostname "grep Expires /etc/sudoers"`
EXPIREDATE=`echo $EXPIRES | awk -F " " '{ printf $3 }'`

if [ $TODAY = $EXPIREDATE ]
    then
            echo "This matches"
            exit
    else
            echo "this doesn't match"
            echo "$TODAY"
            echo "$EXPIREDATE"
            exit
fi
exit

出力: sh テスト

this doesn't match
12122012
12122012

比較の複数のバリエーションを試しましたが、運がありません。どんなアイデアでも大歓迎です。ありがとう!

更新
空白をチェックするためのコメントからいくつかの提案を適用した後、echo ステートメントでもう少し見ることができます。これがどのように発生しているのかよくわかりません 0_o

#>echo test${TODAY}more
   test12122012more
#>echo test${EXPIREDATE}more
   more12122012
4

1 に答える 1

2

リモートファイルはCRLF改行を使用しています。trCRを取り除くには、テキストを渡す必要があります。

... | tr -d '\r'
于 2012-12-12T15:07:02.087 に答える