これは fetchmail デーモンスクリプトの一部です。
if [ ! "x$START_DAEMON" = "xyes" -a ! "$1" = "status" ]; then
それを使う理由は何ですかx$START_DAEMON = "xyes"
?ただ使用しないのはなぜですか$START_DAEMON = "yes"
?
ベストアンサー1
x$variable
そのような場合を見たことがあります。いいえこの場合の参照は、$START_DAEMON
変数(この場合)が空である可能性がある場合を処理することです。それ以外の場合は、テストが存在することを確認し、! = "yes"
エラーが発生します。しかし、あなたのコメントで指摘したように、二重引用符はx$variable
この問題を解決します。
一方、質問はサーバー障害このページに移動します。http://pubs.opengroup.org/onlinepubs/009695399/utilities/test.htmlそのうちの1つは、潜在的に混乱したり混乱した変数の拡張を防ぐことです[
。test
それにもかかわらず、私はこれが古い(オープングループページに記載されているように「歴史的」)シェルの問題である可能性があると思いますx
。したがって、これはおそらく主にコーディングの伝統です。/bin/sh
しかし、SunOS 5.10で使用する際に問題があることを確認しました。
# a="!"; [ "$a" = "yes" ] && echo ok
test: argument expected