Previous: Numeric tests, Up: test invocation [Contents][Index]
test
の論理結合演算子test
内蔵のこうした論理結合演算子より、
シェルの論理基本演算子を使用した方がよいことに留意していただきたい。
と言うのは、式が、パラメータの展開によっては、曖昧になることがあるからである。
たとえば、次の式は、‘$1’ が ‘'!'’ であり、‘$2’ が空文字列 ‘''’ だと、曖昧になる (訳注: ’!’ が文字列か否定演算子か、曖昧だということだろう)。
test "$1" -a "$2"
だから、以下のように書いた方がよい。
test "$1" && test "$2"
シェルの論理基本演算子では、作業の簡略化による利益も得られる。 それは、ファイルの属性のテストを何度もやる場合には、かなりのものになるかもしれない。
expr が偽ならば、真。‘!’ は expr のどの部分よりも優先順位が低い。 ‘!’ は二項式の左に指定する必要があることに注意していただきたい。 すなわち、‘1 '!' -gt 2’ ではなく、‘'!' 1 -gt 2’ である。 なお、‘!’ はシェルの特殊文字であることが多いので、クォートした方が間違いがない。
expr1 と expr2 の両方が真ならば、真。 ‘-a’ は左結合であり、‘-o’ よりも優先順位が高い。
expr1 と expr2 のどちらかが真ならば、真。 ‘-o’ は左結合である。