交互输入与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. C++ 结构体sturct练习

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct Student { ];// 姓名 int id; //id int a ...

  2. npm run build时卡住不动了...

    在build文件夹里有个check-versions.js. if (shell.which('npm')) { versionRequirements.push({ name: 'npm', cur ...

  3. js 为数组编写该方法;indexOf

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

  4. 什么是yarn,如何使用yarn安装项目依赖

    一.yarn的简介: Yarn是facebook发布的一款取代npm的包管理工具. 二.yarn的特点: 1.速度超快. Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载 ...

  5. 分布式——吞吐量巨强、Hbase的承载者 LSMT

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式系统的第九篇文章. 今天给大家分享的内容是LSM树,它的英文是Log-structed Merge-tree.看着有些发怵,但其 ...

  6. 由国产性能测试工具WEB压力测试仿真能力对比让我想到的

    软件的行业在中国已得到长足的发展,软件的性能测试在软件研发过程显得越来越重要.国产的性能工具在好多大公司都在提供云服务的有偿收费测试.如:阿里的PTS(Performance Testing Serv ...

  7. 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)

    前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...

  8. Jenkins+Ant+JMeter集成

    Tomcat是jenkins运行的容器,jenkins实际上是依赖于Tomcat才能启动的.Jenkins可以调度ant的脚本. Ant和maven类似,maven是执行pom文件,ant是执行bui ...

  9. 批量redis未授权检测工具&批量redis弱口令爆破工具

    今天需要然后就百度搜索了一波,然后自己稍微改了一下: #!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Author: 偷来 ...

  10. [CVPR 2019]NOCS代码训练、检测与评估

    Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation 训练.检测与评估 本文 ...