IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

shell常用的判断条件

Zhang Jiuan' Notes 2009-12-07 16:13:40 累计浏览 4,038 次
本机暂存
以下是代码片段:
#!/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. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Bash的模式和配置文件加载 (累计阅读 24,405)
  2. 28个Unix/Linux的命令行神器 (累计阅读 16,789)
  3. 我常用的主机监控shell脚本 (累计阅读 13,429)
  4. 高效Linux用户需要了解的命令行技能 (累计阅读 12,823)
  5. 100个常用的linux命令 (累计阅读 11,604)
  6. Linux命令行里的“瑞士军刀” (累计阅读 11,584)
  7. linux 建立两台机器的信任关系 (累计阅读 11,481)
  8. 每个程序员都应该知道的8个Linux命令 (累计阅读 10,742)
  9. perl更新/修改/删除文本文件内容 (累计阅读 10,646)
  10. 最受欢迎的10个 Linux 单行命令 (累计阅读 10,128)