if文の大文字-Nオプションはどういう意味ですか?

if文の大文字-Nオプションはどういう意味ですか?
man test

-n小文字のnで意味を説明するだけです。

このスクリプトでは、大文字-Nはどのように機能しますか?

#!/bin/bash

# Check for an altered certificate (means there was a renew)
if [[ -N '/etc/letsencrypt/live/mx1.example.com/fullchain.pem' ]]; then  
   # Reload postfix
   /bin/systemctl reload postfix
   # Restart dovecot
   /bin/systemctl restart dovecot
fi  

ベストアンサー1

-N(for ew)オプションは、N新しい自動ロード機能をサポートするために1996年バージョン3.0.1のzsh条件式に追加されました。この機能は、すべてのメールボックス(、....)checkmailで新しいメールを確認するために使用できます。$MAIL$mailpath

これは、ファイルの変更時刻が最後のアクセス時刻よりも最新であることを確認してこれを行います。つまり、最後の変更以降(メールボックスファイルに適用したときに電子メールを受信した後)、ファイルが読み込まれていないことを確認します。

~からChangelog当時の文書:

Sun Aug 25 23:06:43 1996  Zoltán Hidvégi  <[email protected]>

        * Functions/checkmail, Doc/zsh.texi, Doc/zshmisc.man, Src/cond.c,
          Src/parse.c: new -N contitional test to check if the access time
          of a file is not newer than its modification time.  A new
          checkmail function is also included to check mailpath or the
          given forlers for new mails.

興味深いことに、このcheckmail機能は文書化されておらず(まだ含まれており、zshまだ実行できますautoload checkmail; checkmail)、機能(各プロンプトの前に新しい電子メールを確認)は、80年代と同様にすでにシェルに組み込まれています。 Kornシェルと同じです。来年statは、3.1.2で導入された新しい組み込み機能も検査を手動で実行できるため、-Nこのテストを不要にしてmtime > atimeフラグが存在することは幸運です。

しかし、後で(1998年2.02)、ksh93(2003年ksh93o)、および(2010年2.22)によってコピーされtest -Nました。bashyash

最近では、多くのシステムがパフォーマンス上の理由でファイルのアクセスタイムスタンプを更新しないため、これ以上役に立ちません。

おすすめ記事