Chinaunix首页 | 论坛 | 博客
  • 博客访问: 970383
  • 博文数量: 358
  • 博客积分: 8185
  • 博客等级: 中将
  • 技术积分: 3751
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:27
个人简介

The views and opinions expressed all for my own,only for study and test, not reflect the views of Any Company and its affiliates.

文章分类

全部博文(358)

文章存档

2012年(8)

2011年(18)

2010年(50)

2009年(218)

2008年(64)

我的朋友

分类: LINUX

2009-06-08 21:57:07

man test

test(1)                                                                         test(1)
名前
       test - ファイル形式のチェックや値の比較を行う
書式
       test [expr]
       test [--help] [--version]
説明
       test  は条件式 expr を評価した結果によって、 0 (真) または 1 (偽) を終了ステータ
       スとして返す。
       式の各部分はそれぞれ分離された引数でなければならない。式は単項式あるいは二項式で
       ある。 test はファイルのステータス調査、文字列操作、数値の比較演算を行うことがで
       きる。
       ほとんどのシェルには同名の組み込みコマンドがあるので、単に ‘test’ として実行する
       と、ここで記述されたものとは異なった機能のものが実行されるだろう。
   ファイル形式のテスト
       -b file
              file が存在し、ブロックスペシャルファイルであれば真。
       -c file
              file が存在し、キャラクタスペシャルファイルであれば真。
       -d file
              file が存在し、ディレクトリであれば真。
       -f file
              file が存在し、通常ファイル (regular file) であれば真。
       -h file
       -L file
              file が存在し、シンボリックリンクであれば真。
       -p file
              file が存在し、名前付きパイプ (named pipe) であれば真。
       -S file
              file が存在し、ソケットであれば真。
       -t [fd]
              fd が端末でオープンされていれば真。 fd が省略された場合のデフォルト値は 1
              (標準出力)。
   ファイルのパーミッションのテスト
       -g file
              file が存在し、set GID されていれば真。
       -k file
              file が存在し、 sticky ビットが立っていれば真。
       -r file
              file が存在し、読み取り可能であれば真。
       -u file
              file が存在し、 set SUID されていれば真。
       -w file
              file が存在し、書き込み可能であれば真。
       -x file
              file が存在し、実行可能であれば真。
       -O file
              file が存在し、現在の実効ユーザー id による所有であれば真。
       -G file
              file が存在し、現在の実効グループ id による所有であれば真。
   ファイル特性のテスト
       -e file
              file が存在すれば真。
       -s file
              file が存在し、サイズが 0 より大きければ真。
       file1 -nt file2
              file1 が file2 より (修正時刻で比較して) 新しければ真。
       file1 -ot file2
              file1 が file2 より古ければ真。
       file1 -ef file2
              file1 と file2 のデバイス番号と i-ノード番号が共に等しければ真。
   文字列のテスト
       string
       -n string
              string の長さが 0 より大きければ真。
       -z string
              file が存在し、読み取り可能であれば真。
       -u file
              file が存在し、 set SUID されていれば真。
       -w file
              file が存在し、書き込み可能であれば真。
       -x file
              file が存在し、実行可能であれば真。
       -O file
              file
*****************************************************************************************************
*****************************************************************************************************
shell判断文件,目录是否存在或者具有权限
2008-09-01 16:23
#!/bin/sh 
myPath="/var/log/httpd/" 
myFile="/var /log/httpd/access.log" 
#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 
if [ ! -x "$myPath"]; then 
mkdir "$myPath" 
fi 
#这里的-d 参数判断$myPath是否存在 
if [ ! -d "$myPath"]; then 
mkdir "$myPath" 
fi 
#这里的-f参数判断$myFile是否存在 
if [ ! -f "$myFile" ]; then 
touch "$myFile" 
fi 
#其他参数还有-n,-n是判断一个变量是否是否有值 
if [ ! -n "$myVar" ]; then 
echo "$myVar is empty" 
exit 0 
fi 
#两个变量判断是否相等 
if [ "$var1" = "$var2" ]; then 
echo '$var1 eq $var2' 
else 
echo '$var1 not eq $var2' 
fi


========================================
shell 判断语句

流程控制 "if" 表达式 如果条件为真则执行then后面的部分: if ....; then
....
elif ....; then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。 
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等          -r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真 
######################################################### 含条件选择的shell脚本
    对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包 括比较运算、判断文件是否存在等。基本的if条件命令选项有: -eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几 乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。 ################################################################## 判断文件是否存在 #!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" chenshuo@soufun.com
fi

阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~