トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

シェルプログラミング 条件



目次



記事一覧

キーワード

シェルプログラミング 条件


 test ([) コマンド

[シェルプログラミング]

  • 真偽の判定
  • ほとんどのシステムでは、test コマンドと [ コマンドは同じもの

引数に指定されたファイルが存在するか判定

#!bin/sh
if test -f "$1"
then
  echo "$1 found."
fi

if [ -f "$1" ]; then
  echo "$1 found."
fi
  • [ はコマンドなので、条件との間には空白が必要
  • ifと同じ行にthenを記述する場合には、; (セミコロン)が必要
  • testコマンドが判定できる条件は、文字列比較、算術比較、ファイルの判定

文字列比較
文字列比較 結果
string1 = string2 文字列が等しければ真
string1 != string2 文字列が等しくなければ真
-n string 文字列がnullでなければ真
-z string 文字列がnull(空文字)であれば真

算術比較
算術比較 結果
exp1 -eq exp2 2つの式が等しければ真
exp1 -ne exp2 2つの式が等しくなければ真
exp1 -gt exp2 exp1がexp2より大きければ真 >
exp1 -ge exp2 exp1がexp2より大きいか、等しければば真 >=
exp1 -lt exp2 exp1がexp2より小さければ真 <
exp1 -le exp2 exp1がexp2より小さいか、等しければば真 <=
!exp 式の真偽を反転

ファイルの判定
ファイルの判定 結果
-d file ディレクトリなら真
-e file 存在すれば真
-f file 通常のファイルなら真
-g file set-group-idビットがセットされていれば真
-r file 読み取り可能なら真
-s file サイズが0でなければ真
-u file set-user-idビットがセットされていれば真
-w file 書き込み可能なら真
-x file 実行可能なら真

引数に指定されたファイルの判定

#!/bin/sh

if [ -f "$1" ];then
  echo "file $1 exists."
fi

if [ -d "$1" ];then
  echo "$1 is directory."
else
  echo "$1 is not a directory."

  if [ -r "$1" ];then
    echo "readable."
  fi
  if [ -w "$1" ];then
    echo "writable."
  fi
  if [ -x "$1" ];then
    echo "executable."
  fi
fi


上記はこの本からの覚書。

非常にわかりやすく説明されている良書





YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.