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