交互输入与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. 【03】openlayers 地图事件

    绑定事件:map.on(type, listener) 取消绑定:map.un(type, listener) type:事件类型 listener:执行得函数体 事件类型: //事件类型 let t ...

  2. 01-if条件语句之数字比较

    if条件语句之数字比较 #!/bin/bash # 使用expr命令,比较结果正确,输入1,错误输入0 expr_mode(){ if [ $(expr $1 \<\= $2) -eq 1 ]; ...

  3. Oracle 11.2 RAC on Redhat 6.5 安装最佳实践

    本文讲述了在Redhat 6.5 上安装Oracle 11.2 RAC的详细步骤,是一篇step by step指南,全文没有什么技术难度,只要一步步跟着做就一定能安装成功. 环境介绍 分类 项目 说 ...

  4. 部署nginx后无法访问数据库,查看www-error.log日志报错Class 'mysqli' not found in /usr/local/nginx/html/mysql.php on line 2

    检查你的php-mysql包是否安装 [root@localhost nginx]# rpm -qa php-mysql 没有任何输出则没有安装,接下来用yum安装php-mysql yum -y i ...

  5. 13.浏览器屏幕缩放bug修复

    目录 问题:浏览器缩放时,轮播图显示不全,滚动水平滚动条,发现图片缺失 解决:隐藏水平滚动条,页面都只提供垂直滚动条的需求 问题:浏览器缩放时,轮播图显示不全,滚动水平滚动条,发现图片缺失 解决:隐藏 ...

  6. sklearn概述

    Simple and efficient tools for predictive data analysis Accessible to everybody, and reusable in var ...

  7. vscode 自动修复 setting.json 修改完,得重启浏览器 # 新版(>1.41.0)配置 vscode #解决了

    vscode 自动修复 setting.json 修改完,得重启浏览器,不用 npm run dev 就能看到效果 "editor.codeActionsOnSave": { &q ...

  8. linux入门系列18--Web服务之Apache服务2

    接上一篇文章,在了解Apache基本配置以及SELinux相关知识后,继续演示Apache提供的虚拟主机功能以及访问控制方式. 如果还没看上一篇的建议先查看后再来,上篇文章"linux入门系 ...

  9. MySQL数据备份与恢复(二) -- xtrabackup工具

    上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容. 1.  xtrabackup 工具的安装 1.1  安装依赖包 ...

  10. Linux下安装MySQL的tar.gz包

    以root用户登录待安装的服务器. 上传软件包并解压. 以root用户通过sftp/ftp工具上传“mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz”软件包到“/o ...