shell基本的语句

  一:if语句

    格式:

      if [ #条件的判断 ];then

      #执行的动作

      fi

    操作符     

    +  加
    -   减
    *   乘
    /    除【取整数商】
    %  余【取余数】

    数值的比较

参数 说明 示例  
-eq 等于则条件为真 [ 1 -eq 10 ]
-ne 不等于则条件为真 [ 1 -ne 10 ]
-gt 大于则条件为真 [ 1 -gt 10 ]
-lt 小于则条件为真 [ 1 -lt 10 ]
-ge 大于等于则条件为真 [ 1 -ge 10 ]
-le 小于等于则条件为真 [ 1 -le 10 ]

  二:case语句

    格式:

    case #变量   in

      1)

      ;;

      ......

      *)

    esac

    示例:脚本启动关闭重启nginx服务【判断服务是否存活,判断其pid文件,如果没有可以在手动的创建pid文件】   

    #!/usr/bin/bash

    source /etc/init.d/functions

    case $1 in
      start)
        if [ -f /var/run/nginx.pid ];then
          echo "nginx服务已经启动"
          exit
        else
          /usr/sbin/nginx
          action "nginx服务启动" /bin/true
        fi
      ;;
      stop)
        if [ -f /var/run/nginx.pid ];then
          /usr/sbin/nginx -s stop
            if [ $? -eq 0 ];then
              action "nginx服务正在关闭。。。" /bin/false
            else  
              action "nginx服务关闭失败。。。" /bin/false
            fi
          action "nginx服务正在关闭。。。" /bin/false
        fi
      ;;
      reload)
        $0 stop
        $0 start
      ;;
      *)

        echo "USSGE: $0 [ start|stop|reload ]"
    esac

  三:for语句

    示例:根据手动输入用户的前缀与后缀进行创建用户    

    #!/usr/bin/bash
    if [ ! $UID -eq 0 ] && [ ! $USER == “root” ];then
      echo "无权限执行......"
      exit 
    fi

    read -p "请输入你要创建的用户前缀: " user_qz
    if [ -z $user_qz ];then
      echo "请输入有效的值....."
      exit 
    fi

    read -p "请输入你要创建的用户数量: " user_num
      if [[ ! $user_num =~ ^[0-9]+$ ]];then
      echo "请输入整数"
      exit 
    fi

    echo "你创建的用户是 ${user_qz}1 ..${user_qz}${user_num}"
    read -p "你要创建的用户如下,你确定要创建吗?[ y/n ] " readly

    case $readly in
      y|yes|YES)
        for i in $(seq $user_num)
        do
          user=${user_qz}${i}
          id $user &>/dev/null
            if [ $? -eq 0 ];then
              echo "useradd: user $user already exists"
            else

              useradd $user;echo $RANDOM|tee -a backup.txt|passwd --stdin $user &>/dev/null
              echo "useradd: user $user add successfully."

            fi
        done

      ;;
      n|no|NO)

      ;;
      *)
        echo "你想好了再创建......"
      ;;
      esac

      示例二:批量创建用户

      #!/usr/bin/bash

      for i in $(cat user.txt)
      do
      user=$(echo $i|awk -F ":" '{print $1}')
      pass=$(echo $i|awk -F ":" '{print $2}')

      id $user &>/dev/null

      if [ $? -eq 0 ];then
        echo "$user 已存在"
      else
        useradd $user
        echo "$pass" | passwd --stdin $user &>/dev/null
      fi
      done

   四:while语句

     示例:      

    #!/usr/bin/bash
    i=1
    j=10
    while [ $i -lt 10 ]
    do
      sum=$(( $i + $j ))
      echo $i + $j = $sum
      let i--
      let j++
    done

    #!/usr/bin/bash
    while read line
    do

      id $line &>/dev/null
      rc=$?
        if [ $rc -eq 0 ];then
          echo "$line 用户已经创建"
          sleep 1
        else
          useradd $line;echo "123"|passwd --stdin $line &>/dev/null
          echo "$line 用户创建成功"
          sleep 1
        fi

    done<user.txt

   五:函数【函数的传参与位置参数不同】

     #!/usr/bin/bash
     file=/etc/passwd
     t_file(){
      if [ -f $file ];then
        return 20
      else
        return 30
      fi
    }
    t_file

    if [ $? -eq 20 ];then
      echo "文件存在"
    elif [ $? -eq 30 ];then
      echo "文件不存在"
    fi

  六:数组【取值,累加,打印】

    示例:       

    #!/usr/bin/bash
    declare -A info_passwd
    while read line
    do
      type=$(echo $line|awk -F ":" '{print $NF}')
      let info_passwd[$type]++
    done</etc/passwd
    for i in ${!info_passwd[@]}
    do
      echo 索引的名称:$i 索引对应次数: ${info_passwd[$i]}
    done

  七:运算符

    算术:expr 1 + 2     $[ 1 + 2 ] 

    布尔:

     !      非运算,表达式为 true 则返回 false,否则返回 true。

     -o      或运算,有一个表达式为 true 则返回 true。

     -a      与运算,两个表达式都为 true 才返回 true。

    逻辑:

     &&      逻辑的 AND,和的意思

     ||      逻辑的OR,或的意思

    字符串:

      =        检测两个字符串是否相等,相等返回 true        

      !=        检测两个字符串是否相等,不相等返回 true。

       -z        检测字符串长度是否为0,为0返回 true。

      -n        检测字符串长度是否为0,不为0返回 true

      $a        检测字符串是否为空,不为空返回 true

shell知识的更多相关文章

  1. DBA需要掌握的shell知识

    每个中高级DBA都需要掌握一些简单脚本的编写,这样才能从繁杂重复的基础维护工作中解脱出来,才能有时间去研究更有价值的技术.VBird在讲shell script的时候,给出了几个经典的小范例练习,对于 ...

  2. 每天一个shell知识--数组

    1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL ...

  3. 几个常用的linux快捷键和shell知识

    1)   !$    !$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串.如:你可能会这样:     $mkdir mydir     $mv mydir yourdir     $cd y ...

  4. shell知识积累

    Ubuntu下常用的快捷键:https://blog.csdn.net/u010771356/article/details/53543041 变量名和等号之间不能有空格,变量名中间不能有空格,可以使 ...

  5. 看懂shebang吧,只需一点点shell知识,从此再也不犯强迫症

    Python2: 开启一个terminal,输入下面命令: yshuangj@ubuntu:~$ vim helloA.py 在vim编辑器中,进入编辑模式(按i),输入下面的代码,然后退出编辑模式( ...

  6. shell 知识

    解压 tar.bz2文件 bunzip2 linux-2.6.13.tar.bz2 | tar xvf -

  7. Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程

    Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...

  8. Android shell 下 busybox,clear,tcpdump、、众多命令的移植

    http://my.oschina.net/mopidick/blog/167372 作为一名Android开发者,经常需要进入Android 的shell终端运行一些命令.但是我们发现Android ...

  9. 跟着老男孩一步步学习Shell高级编程实战

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1264627 本sh ...

随机推荐

  1. ubuntu16下安装openssh

    由于SecureCRT.xshell远程连接ubuntu是通过ssh协议的,所以,需要给ubuntu安装ssh服务器. 1. ssh协议科普 Secure Shell(缩写为SSH),由IETF的网络 ...

  2. C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出

    C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出 strstr() 命令是在原字符串中查找指定的字符串第一次出现的地址,用这个特性可以实现字符的分割,判断是否包涵等功能: ...

  3. 文本建模、文本分类相关开源项目推荐(Pytorch实现)

    Awesome-Repositories-for-Text-Modeling repo paper miracleyoo/DPCNN-TextCNN-Pytorch-Inception Deep Py ...

  4. mac 环境搭建

    安装homebrew jdk 也可以官网下载 maven 官网下载tar.gz包 也在homebrew下安装git,java,mysql.

  5. 网络yum源制作

    思路:在网络上准备一个主机,在其中安装一个web服务器软件(比如apache),然后创建一个目录,在这个目录中准备上yum仓库的全部资源,如果用户可以通过网络访问到该主机的这个目录,那么这个目录就成为 ...

  6. GIS案例学习笔记-三维生成和可视化表达

    GIS案例学习笔记-三维生成和可视化表达 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:针对栅格或者矢量数值型数据,进行三维可视化表达 操作时间:15分钟 案 ...

  7. Adobe CC 下载地址

    Adobe CC 2015下载地址 Photoshop http://trials3.adobe.com/AdobeProducts/PHSP/16/win32/Photoshop_16_LS20_w ...

  8. IDEA连接数据库自动生成实体类

    1.连接数据库   (1)按下图 ,  点击view-----选择tool windows----------选择database并点击   (2)弹出Database窗口,点击加号--------- ...

  9. 使用autohotkey修改方向键、回车和启动程序

    具体步骤 下载并安装autohotkey. 在你觉得合适的地方鼠标右键-新建-autohotkey script(脚本):或者创建一个别的文件,再把后缀改成ahk也可以 一个新建的ahk文档里面会有这 ...

  10. Python学习—数据库篇之SQL补充

    一.SQL注入问题 在使用pymysql进行信息查询时,推荐使用传参的方式,禁止使用字符串拼接方式,因为字符串拼接往往会带来sql注入的问题 # -*- coding:utf-8 -*- # auth ...