交互输入与for语句
1、交互输入
 read  Python中用input()函数,进行输入;
 
 read命令同时可以定义多个变量值;而输入的内容默认以空格为分隔符,将值输入到对应的变量中;
 如果默认值过多,最后所有的变量则为空值;
 如果默认值过少,多余的变量则为空值;
 
 示例:
  read a b c
  aa bb cc
 
 read如何输入:
  echo "请输入一个目录:"
   我们需要 echo -n 取消换行符号
  echo "请输入一个目录:";read 变量
  请输入一个目录:\etc
 
  常用参数:
   -p
   read -p "请输入一个目录:" 变量
   -t 定义超时时间
   read -t 5 -p "请输入一个目录:" 变量
  脚本默认值
   [-n $filename] &&
   filename="why"
   输入内容-----------------------------------
   |        |
   输入是否正确---------                    没有输入------------------
   |              |                      |                      |
   正确                 不正确,给提示     提示必须输入           给出默认值
 
  练习:输入一个设备文件,输出这个设备文件的基本信息;  
 #!/bin/bash
 #
 read -t 5 -p "输入一个设备文件名:" devname
 [ -z $devname ] && fdisk -l && exit 1
 if [ -b /dev/$devname ];then
  fdisk -l /dev/$devname
  exit 0
 else
  echo "$devname 不是设备文件"
  echo "Usage:'请输入一个设备文件,如 sda'"
 fi
 
2、for语句循环  while until
 回顾:文件判断脚本;
 #!/bin/bash
 #
 read -p "输入一个文件名:" name
 if [ -z $name ];then
  echo "Usage:'输入一个文件名:/etc/fstab'"
  exit 1
 fi
 if [ ! -e $name ];then
  echo "提示:输入的文件不存在!!fool"
  exit 2
 elif [ -f $name ];then
  echo "$name is a file"
 elif [ -d $name ];then
  echo "$name is a dir" 
 elif [ -b $name ];then
  echo "$name is a block file"
 elif [ -L $name ];then
  echo "$name is a Link file"
 else
  echo "$name是其他文件类型"
 fi 
 
 case 语句? -- 做匹配
  case语句的语法格式:
  case 变量 in
  PATTEN1)
   代码块1
   ;;
  PATTEN2)
   代码块2
   ;;
  *)
   代码库
  esac
 -----------------------------------------------
 for语句的应用场景:
  有一个功能,这个功能需要循环执行,只是执行对象不同;【对象必须是同类数据】
 for语句格式:
  a=['a','b','c'] -- 在Python程序中,我们很多情况下,需要调用相应的方法去生成列表;
  for 变量 in 列表;do
   循环体
  done
 99乘法表:
  {1..9}
  #!/bin/bash
  #
  for i in `seq 9`;do
   for j in `seq 9`;do
    [ $j -le $i ] && echo -n -e "$i*$j=`echo $(($i*$j))`\t"
   done
   echo " "
  done
  #!/bin/bash
  # 99乘法表
  for i in {1..9};do
   for j in {0..$i} ; do   ??
    echo -n -e "$j*$i=$[$i*$j]\t"
   done
   echo
  done 
 echo -e  
  -e : 使echo命令,能够识别 特殊字符;
  \r   回车不换行
  \n  换行符
  \t   制表符 tab = 4个空格
  
 unix2dos  \r\n -- > \n
 dos2unix
 列表的生成方式:
 1、直接给出字符串列表
 for i in a b c d e ;do
  循环体
 done
 2、整数列表
  a {start ... end} // {1..1}是不行的 {1..9}  == python range{1,100}
  b seq 命令引用  $(seq [start [step]] end)
   步长  python range{1,100,2}
   seq 20 30
  题目:写一个for循环--遍历本网络网段中所有up的电脑
  #!/bin/bash
  # ping遍历
  declare -i sum=0
  for i in $(seq 1 100);do
         ping -c 1 -w 1 10.6.12.$i &> /dev/null
           if [ $? -eq 0 ];then
                   let sum++
                   echo "10.6.12.$i 是通的"       
          else
                   echo "10.6.12.$i 是不通的"
           fi
  done
  echo "总共有 $sum 台电脑在线"
  题目:1到100的偶数和
  #!/bin/bash
  # 偶数和
  
  declare -i sum=0
  for i in $(seq 0 2 100);do
   let sum+=$i
  done
  echo “总数为:$sum”
 3、返回列表的命令
  $(COMMAND)
  应用场景: ls /var/log/
  题目:判断 /var/log/ 的所有文件,以 .log 结尾的文件统计处理啊,并显示:
  #!/bin/bash
  #
  declare -i sum=0
  for i in $(ls /var/log/);do
   if [ "*.log" = $i ];then
    echo $i
    let sum++
   fi
  done
  
  echo ".log结尾的文件有:$sum"
  题目:netstat -tan 查看网络状态,统计 LISTEN 出现的状态次数、ESTABLISHED出现的状态次数、OTHER 状态出现的次数;
  
  vim 常见用法:
   命令模式:
    dd  剪切
    5dd
    p    粘贴
    yy  复制
    5yy
    p    粘贴
 4、glob机制 -- 文件名通配符的机制
  $(ls /var/log/)
  /var/log/*
  
  test命令总结:
   1、test的命令的option的 -a  -o 只在命令中使用;
    例如 [ `du -h $filename | cut -d: -f1` -lt 100K -a -x $filename ] 
            test `du -h $filename | cut -d: -f1` -lt 100K -a -x $filename
    注意:做字符串匹配的时候,不支持正则以及通配符
   2、test test ==  [[  ]]
    再连接两个test的命令的时候,不能使用命令内部option  -o -a
    一般使用  ||   &&  ==  !=  >=  <=
    [[ yum.log == *.log ]]
     
 5、变量引用
  $@  $*  将参数做为for循环的列表
 
case
while
until
keepalived --  主备 需求:每一个小时去匹配一下主备设备的keepalived的配置文件是否相同?
 hash
 安全:1、加密 2、校验 3、原认证 4、证书认证(不可否性)
  2、校验:hash
函数
字符串处理
数组
sed
awk

Shell:Day05.笔记的更多相关文章

  1. Learning The Bash Shell读书笔记(整理)

    最近搞了一本书 Learning Bash Shell,发现有人已经写了阅读笔记,我就在这边整理一下 来自blog:http://blog.sina.com.cn/n4mine Learning Th ...

  2. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  3. Shell编程笔记

    Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理.   修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...

  4. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  5. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  6. python day05笔记总结

    2019.4.2 S21 day05笔记总结 一.昨日内容回顾与补充 1.extend(列表独有功能) 循环添加到一个列表中 a.有列表users = ['张三',‘李四]   people = [' ...

  7. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  8. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  9. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

随机推荐

  1. linux4.1.36 解决 SPI 时钟找不到 不生成设备 device

    最初的问题是 编译内核添加了 spi 支持,配置了 board 后,加载25q64驱动不执行probe 函数. 然后发现是,spi-s3c24xx.c 中的 probe 没有执行完就退出了 没有生成 ...

  2. SQL之开窗函数详解--可代替聚合函数使用

    在没学习开窗函数之前,我们都知道,用了分组之后,查询字段就只能是分组字段和聚合的字段,这带来了极大的不方便,有时我们查询时需要分组,又需要查询不分组的字段,每次都要又到子查询,这样显得sql语句复杂难 ...

  3. eclipse代码提示完善

    转载请注明出处:https://www.cnblogs.com/Higurashi-kagome/p/12263267.html 1.参考https://blog.csdn.net/ithomer/a ...

  4. 《ASP.NET Core 3框架揭秘》博文汇总

    在过去一段时间内,写了一系列关于ASP.NET Core 3相关的文章,其中绝大部分来源于即将出版的<ASP.NET Core 3框架揭秘>(博文只能算是"初稿",与书 ...

  5. JavaScript隐式类型转换(详解 +,-,*,/,==)

    JavaScript 在 运算 或 比较 之前, 会自动进行隐式类型转换. 下面我们来仔细讲一讲 + - * / == 运算符经历了哪些过程. 类型转换 ECMAScript 运行时系统会在需要时从事 ...

  6. F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

    前言 为什么要有微服务呢? 什么是微服务? SpringCloud 中为什么会有那么多的组件? ...... 作为SpringCloud教程的第一篇,不讲解具体的技术使用,通过一个通俗易懂的小故事,来 ...

  7. Natas28 Writeup(ECB分组密码攻击)

    Natas28: 页面显示这是一个笑话库,可以查找提交字符串所在的笑话内容并随机返回. 初步探索 burp抓包发现,流程是post表单提交一个明文后返回一个重定向,然后get请求一个加密参数返回查询结 ...

  8. Journal of Proteome Research | Clinically Applicable Deep Learning Algorithm Using Quantitative Proteomic Data (分享人:翁海玉)

    题目:Clinically Applicable Deep Learning Algorithm Using Quantitative Proteomic Data 期刊:Journal of Pro ...

  9. 动态规划-Maximum Subarray-Maximum Sum Circular Subarray

    2020-02-18 20:57:58 一.Maximum Subarray 经典的动态规划问题. 问题描述: 问题求解: public int maxSubArray(int[] nums) { i ...

  10. [最短路,最大流最小割定理] 2019 Multi-University Training Contest 1 Path

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6582 Path Time Limit: 2000/1000 MS (Java/Others)    Mem ...