IT技术博客大学习 共学习 共进步

shell常用的判断条件

Zhang Jiuan' Notes 2009-12-07 16:13:40 浏览 3,962 次
以下是代码片段:
#!/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/xxx/shell
if [ -f "$file" ];then
echo “OK”
else
echo “error $file” >error.log
mail -s “fail backup from test” xxx@xxxcom <error.log
fi

建议继续学习

  1. 你可能不知道的Shell (阅读 8,161)
  2. 在 shell 脚本里打日志 (阅读 6,041)
  3. 面向对象的Shell脚本 (阅读 5,981)
  4. Bash如何取得当前正在执行的脚本的绝对路径? (阅读 5,842)
  5. 使用Shell快捷键助你一臂之力 (阅读 5,383)
  6. Bash Shell 快捷键 (阅读 4,881)
  7. 加密你的shell (阅读 4,842)
  8. shell文件存在相关判断参数 (阅读 4,701)
  9. Unix考古记:一个“遗失”的shell (阅读 4,443)
  10. Shell的那些事儿 (阅读 4,423)