交互输入与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. js 实现简单的导航下拉列表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. js 完美运动框架

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. [Microsoft Teams]使用连接器接收Azure Devops的通知

    1. 什么是连接器 连接器(connector)是Teams中频道的一个接受消息的功能,官方的解释如下: 连接器允许用户订阅来自 web 服务的接收通知和消息. 它们公开服务的 HTTPS 终结点,通 ...

  4. Fluent算例精选|03利用VOF和蒸发-冷凝模型

    通过学习本算例您将获得? 1.学会基本的VOF模型设置流程 2.学会利用蒸发-冷凝模型来模拟传热沸腾 目录 1摘要4 2传热沸腾模型介绍4 3前处理4 4求解设置5 4.1启动Fluent5 4.2网 ...

  5. Natas10 Writeup(正则表达式、grep命令)

    Natas10: 页面与上一关类似,只是增加了提示“出于安全原因,我们现在过滤某些字符”. 查看源码,发现关键代码如下: $key = ""; if(array_key_exist ...

  6. Natas1 Writeup(查看页面源码)

    Natas2: 提示密码就在本页,但右键被禁用,可以使用F12或者抓包查看元素得到flag. flag:ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi 常用的查看源码方法:右键查看. ...

  7. nmon使用问题汇总(不定期更新)

    nmon使用问题汇总 1.nmon常用命令: ./nmon -s1 -c300 -f -m /root/nmon-test-result/项目-50并发/ 2.设置nmon参数为-s1 -c720,发 ...

  8. 深入Redis客户端(redis客户端属性、redis缓冲区、关闭redis客户端)

    深入Redis客户端(redis客户端属性.redis缓冲区.关闭redis客户端) Redis 数据库采用 I/O 多路复用技术实现文件事件处理器,服务器采用单线程单进程的方式来处理多个客户端发送过 ...

  9. ASP.NET动态网站课程设计——个人网页

    时光荏苒,岁月如梭,又是学期期末时,没错,我又来补课程设计了,hhh. 本文主要讲述如何在用H5+CSS3写的静态网站的基础上,结合ASP.NET动态网站开发,制作一个动态的个人网页. 首先需要熟悉一 ...

  10. BookStore示例项目---菜单栏UI分析

    部署 参照 ABP示例项目BookStore搭建部署 项目解构 1).动态脚本代理 启动项目时,默认会调用两个接口 /Abp/ApplicationConfigurationScript /Abp/S ...