Tips記事
» 2003年01月22日 17時00分 UPDATE

シェルスクリプト内の「[」って何?

[木田佳克,ITmedia]

 /etc/rc.d/init.d/下などのデーモン制御スクリプト内を見ていると、if文の後に「[」「]」で囲われた記述がある。

if [ -f /etc/sysconfig/network ]; then
    . /etc/sysconfig/network
else
    NETWORKING=no
    HOSTNAME=localhost
fi

 この括弧は、一見するとシェル文法かと思われるだろう。しかし「[」はコマンドとして存在している。Red Hat Linux 7.x/8.0の例では、次のように/usr/bin/下に見られる。

# ls -l /usr/bin/[
lrwxrwxrwx 1 root root  4 10月 6 03:05 /usr/bin/[ -> test

 上記のシンボリック結果からは、「[」コマンドの実体が「test」コマンドであることが分かる。このため、上記のスクリプトは以下のようなtestコマンドによる記述も可能だ。

if test -f /etc/sysconfig/network
then
    . /etc/sysconfig/network
else
    NETWORKING=no
    HOSTNAME=localhost
fi

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ