热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RH254-第二十八节-脚本语句结构(三)

linuxshell指令诸如-d,-f,-e之类的判断表达式:文件比较运算符-efilename如果filename存在,则为真[-evarlogsyslog]-d

linux shell 指令 诸如-d, -f, -e之类的判断表达式

文件比较运算符
-e filename  如果 filename存在,则为真  [ -e /var/log/syslog ]
-d filename  如果 filename为目录,则为真  [ -d /tmp/mydir ]
-f filename  如果 filename为常规文件,则为真  [ -f /usr/bin/grep ]
-L filename  如果 filename为符号链接,则为真  [ -L /usr/bin/grep ]
-r filename  如果 filename可读,则为真  [ -r /var/log/syslog ]
-w filename  如果 filename可写,则为真  [ -w /var/mytmp.txt ]
-x filename  如果 filename可执行,则为真  [ -L /usr/bin/grep ]
filename1-nt filename2  如果 filename1比 filename2新,则为真  [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2  如果 filename1比 filename2旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string  如果 string长度为零,则为真  [ -z "$myvar" ]
-n string  如果 string长度非零,则为真  [ -n "$myvar" ]
string1= string2  如果 string1与 string2相同,则为真  [ "$myvar" = "one two three" ]
string1!= string2  如果 string1与 string2不同,则为真  [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2  等于 [ 3 -eq $mynum ]
num1-ne num2  不等于 [ 3 -ne $mynum ]
num1-lt num2  小于 [ 3 -lt $mynum ]
num1-le num2  小于或等于 [ 3 -le $mynum ]
num1-gt num2  大于 [ 3 -gt $mynum ]
num1-ge num2  大于或等于 [ 3 -ge $mynum ]

 

这里包含if判断的东西,if 里面的判断[] 里面的条件必须要有空格

例如:

 if [ -e  "/dev/sdb" ];
    then    ...   fi


[ 后面有个空格, ] 前面也有一个空格。

 

linux shell case语句 :

case语句适用于需要进行多重分支的应用情况。

        case分支语句的格式如下:

            case $变量名 in

                模式1

            命令序列1

                ;;

                模式2

            命令序列2

                        ;; 

                *)

            默认执行的命令序列     ;; 

            esac 

        case语句结构特点如下:

        case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。

        双分号“;;”表示命令序列结束。

        匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。

        最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后

    的命令序列。

例如:

 1   case "$1" in                                  //判断$1                                
2 *.sh) //如果是.sh文件,那么执行这一个
3 # Source shell script for speed.
4 (
5 trap - INT QUIT TSTP
6 scriptname=$1
7 shift
8 . $scriptname
9 )
10 ;;
11 *) //如果不是.sh那么执行这个默认的
12 "$@"
13 ;;
14 esac

linux shell   参数:

$1 表示第一个参数。

$2 表示第二个参数。

$3 表示第三个参数。

$@ 表示所有的参数,这个是数组的方式表示所有的参数。

$# 表示参数的个数。

$* 也可以表示所有的参数。

 

linux shell if 判断语句:

一、if的基本语法:
if [ command ];then    符合该条件执行的语句 elif [ command ];then    符合该条件执行的语句 else    符合该条件执行的语句 fi  

linux shell  while 循环:

while循环的格式:
while   do command .... ....  done
Shell脚本文件中常用的操作语句
1. 清空文件中的内容

  cat  /dev/null  >> /var/log/messages

2. 脚本中判断用户是不是root用户

        ROOT_UID = 0            # $UID 为0时,用户才具有root用户权限

        if [ "$UID" -ne "$ROOT_UID"]

        then

   echo "this user is not root"

   exit 1

    fi

3. 多条语句条件运行

  语句1 &&  语句2     # 语句1正确,再运行语句2

  语句1 ||   语句2      #  语句1失败,再执行语句2

     语句1  ||   {

    语句2

    语句3      # 多个语句在一个块中时, 用{}括起来

  }


4. 输出多行提示信息

  cat  <

    1. 第一种方法...  //显示

    2. 第二种方法...  //显示

    3. 第三种方法...  //显示

  END

5. 判断远程网站的端口是否是打开状态


      (1) echo  -e  "\n"  | telnet  baidu.com  80  |  grep  Connectioned


  (2) nc  -w  5  baidu.com  80  &&  echo ok  || echo  no

6. echo 显示内容时添加字体颜色

定义变量:

  BLOCK_COLOR = '\033[30m'
  RED_COLOR = '\033[31m'
  GREEN_COLOR = '\033[32m'
  YELLOW_COLOR = '\033[33m'
  BLUE_COLOR = '\033[34m'         // 蓝色
  PURPLE_COLOR = '\033[35m'      // 紫色
  SKY_BLUE_COLOR = '\033[36m'  // 天蓝色
  WHITE_COLOR = '\033[37m'       // 白色


结束位:

  RES = '\033[0m' // 关闭所有属性

            '\33[1m'  // 设置高亮度

      '\33[4m'   //  下划线

        '\33[5m'   //  闪烁

      '\33[7m'   //  反显

      '\33[8m'   //  消隐

      '\33[30m  --  \33[37m'    // 设置前景色
      '\33[40m  --  \33[47m'    // 设置背景色

      '\33[mA'   // 光标上移m行
      '\33[mB'   // 光标下移m行
      '\33[mC'   // 光标右移m行
      '\33[mD'   // 光标左移m行
      '\33[y;xH'   // 设置光标位置
      '\33[2J'       // 清屏
      '\33[K'        // 清除从光标到行尾的内容
      '\33[s'        // 保存光标位置
      '\33[u'        // 恢复光标位置
      '\33[?25l'    // 隐藏光标
      '\33[?25h'   // 显示光标


推荐阅读
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
罗罗罗罗罗棋辉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有