交互输入与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. 痞子衡嵌入式:恩智浦SDK驱动代码风格、模板、检查工具

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦 SDK 驱动的代码风格. 上周痞子衡受领导指示,给 SE 同事做了一个关于 SDK 代码风格的分享.随着组内新人的增多,这样的培训 ...

  2. JVM04——七个GC垃圾收集器,一个都不能少

    了解了JVM内存区域与垃圾回收算法,今天将为各位带来关于垃圾收集器的知识.关注我的公众号「Java面典」了解更多 Java 相关知识点. Java 堆内存被划分为新生代和老年代两部分,因此 JVM 通 ...

  3. C语言程序设计(三) 简单的算术运算和表达式

    第三章 简单的算术运算和表达式 算数运算符:一元.二元.三元(条件运算符) 1/2是整型除法,1.0/2是浮点数除法 求余运算(%)限定参与运算的两个操作数必须为整数,不能对两个实型数据进行求余运算 ...

  4. 爬虫过程中获取不到列表页的url

    例1: 采集某网站的时候根据网页页面显示的url链接提取的, 最后始终没有数据返回. 主要原因是页面源码中标签的 href 属性值和页面上的不一样. 页面上显示是‘http://www.xxx.org ...

  5. JAVAEE学习day01

    1.二进制和十进制之间的转换: 十进制转换成二进制: 除2取余,从下往上吧余数拼接 二进制转换十进制: 1 0 1 0 8 4 2 1 把有1位的十进制求和 2.JAVA语言跨平台的原理 java程序 ...

  6. Day1T3小w的魔术扑克——图论

    为什么不搞\(T2\)??? 因为我太菜了,那题我是真的搞不出来 题目描述 链接:https://ac.nowcoder.com/acm/contest/1100/C 来源:牛客网 小\(w\)喜欢打 ...

  7. 第一个android App, hello world

    自以为按照教程很快就会创建自己第一个android App,没想到还是用了很长时间,中间走了很多坑,记下来,这也算自己的一个成长吧 首先按照官方的教程,新建一个工程 https://developer ...

  8. ECNU 计算机系统 (CSAPP) 教材习题作业答案集

    这里是华东师范大学计算机系统的作业答案.由于几乎每一年布置的习题都几乎相同,网上的答案又比较分散,就把自己上学期提交的作业pdf放上来了,供参考. 长这样 Download Link:http://c ...

  9. 【Weiss】【第03章】练习3.26:双端队列

    [练习3.26] 双端队列(deque)是由一些项的表组成的数据结构,对该数据结构可以进行下列操作: Push(X,D):将项X插入到双端队列D的前端. Pop(D):从双端队列D中删除前端项并返回. ...

  10. 2. Plugin execution not covered by lifecycle configuration

    问题: 找到当前项目的工作空间下的.metadata\.plugins\org.eclipse.m2e.core路径, 然后添加lifecycle-mapping-metadata.xml文件,内容如 ...