ベストアンサー1
ほとんどの場合、[
これは同等のシェル組み込みですtest
。ただし、同様に、スタンドアロンの実行可能test
ファイルとしても存在します。これが/bin/[
まさにあなたが見るものです。次のコマンドを使用してこれをテストできますtype -a [
(Arch Linuxシステムでは実行bash
)。
$ type -a [
[ is a shell builtin
[ is /bin/[
したがって、私のシステムには2つの方法があります[
。マイシェルの組み込みファイルと、次の/bin
場所に書き込まれた.executableファイルman test
。
TEST(1) User Commands TEST(1)
NAME
test - check file types and compare values
SYNOPSIS
test EXPRESSION
test
[ EXPRESSION ]
[ ]
[ OPTION
DESCRIPTION
Exit with the status determined by EXPRESSION.
[ ... ]
上で引用したマニュアルページに見られるように とtest
は[
同じです。そして/bin/[
/bin/test
POSIXで指定多くのシェルが組み込み機能としても提供されていますが、これがまさにあなたが見つけることができる理由です。これらの存在は、次の構造を保証します。
[ "$var" -gt 10 ] && echo yes
実行中のシェルに組み込み機能がなくても[
機能します。たとえば、次のようになりますtcsh
。
> which [
/sbin/[
> set var = 11
> [ "$var" -gt 10 ] && echo yes
yes