zoukankan      html  css  js  c++  java
  • linux100day(day6)--shell脚本简单逻辑

    if语句:

    if条件语句的使用格式:
      1、单分支语句
        if 条件;then
          执行语句
        fi
      2、双分支语句
        if 条件;then
          执行语句1
        else
          执行语句2
        fi
      3、多分支语句
        if 条件;then
          执行语句1
        elif;then
          执行语句2
        elif;then
          执行语句3
        else
          执行语句4
        fi

    在某些条件判断下,如果不满足该条件,我们必须手动退出程序,否则后面的代码无法执行;
    代码正确执行完成后,我们制定 exit 0 为正确退出码;

    判断某个文件是否存在

    #!/bin/bash
    # 判断文件是否存在
    if [ $# -lt 1 ]; then
      echo "At least one argument." 
      exit 1 
    fi
    if [ -e $1 ];then
      echo "存在"
    else
      echo "不存在"
    if

    判断当前系统上是否有用户的默认shell程序是否为bash程序,如果有,就显示有多少个这类用户,否则就显示没有这类用户;【并且显示出那些用户是bash】

    #!/bin/bash
    # 判断用户的默认shell程序类型
    
    declare -i sum=`grep "bin/bash$" /etc/passwd | wc -l`
    
    if grep "/bin/bash$" /etc/passwd &> /dev/null ; then
      echo "存在 $sum 个用户,shell程序为/bin/bash"
      grep "/bin/bash$" /etc/passwd | cut -d: -f1
      exit 0
    else
      echo "没有这类用户"
      exit 1
    fi

    写出一个脚本程序,给定一个文件,比如:/etc/inittab a、判断这个文件中是否有空白行? b、如果有,则显示其空白行的行号,否则显示没有空白行
    提示,空白行使用^[[:space:]]*$

    #!/bin/bash
    #
    
    B=`grep -n "^[[:space:]]*$" /etc/inittab | wc -l`
    C=`grep -n "^[[:space:]]*$" /root/abc | cut -d: -f1`
    
    if [ $B -eq 0 ] ; then
      echo "没有空白行"
      exit 1
    else
      echo "有空白行,空白行为 $C 行"
      exit 0
    fi

    给定一个文件,如果是普通文件,就显示出来,如果是目录文件,也显示出来,否则就显示“无法识别”

    #!/bin/bash
    #
    # input()
    read -t 5 -p ("请输入一个文件:") filename // -t 等待时间
    echo # 默认用来换行
    
    if [ -n $filename ];then
        echo "eg. /etc/fstab"
        exit 8
    fi
    
    if [ -f $filename ]; then
        echo "$filename 是一个普通文件"
        exit 0
    elif [ -d $filename ];then
        echo "$filename 是一个目录文件"
        exit 0
    else
        echo "无法识别"
        exit 1
    fi

     for语句

    for语句格式:
      for 变量 in 列表;do  
        循环体
      done

    case语句

    case分支格式
      case 变量 in
        PAT1)
          执行语句
          ;;
        PAT2)
          执行语句
          ;;
        *)
          默认执行语句
          ;;   

      esac

    while 循环

    格式:

      定义初始值
      while 条件判断 ; do
        循环体
        值变化语句
      done

    break 跳出循环
    continue 跳出本次循环
    sleep 延长多长时间后,继续向下执行命令

    until

    循环 与 while 用法相同
    区别:只有 判断条件为 False 的时候,才会进入循环语句;

    1到100的偶数和

    #!/bin/bash
    # 偶数和
    declare -i sum=0
    for i in $(seq 0 2 100);do
      let sum+=$i
    done
    echo “总数为:$sum
  • 相关阅读:
    做题遇到的问题集合
    常见算法和数据结构存在的坑(updating)
    Loj#2090. 「ZJOI2016」旅行者(网格图分治)
    洛谷P3332 [ZJOI2013]K大数查询(整体二分板题)
    dij费用流模板
    KM求每个大小的匹配的最优解 模板
    JZOJ 5067. 【GDOI2017第二轮模拟day2】有理有据题 (KD-tree+历史最值问题)
    Codeforces 1186F. Vus the Cossack and a Graph(欧拉回路)
    bzoj#2095. [Poi2010]Bridges(二分+混合图欧拉回路)
    二维最小乘积生成树模板
  • 原文地址:https://www.cnblogs.com/Y139147/p/11412748.html
Copyright © 2011-2022 走看看