交互输入与for语句

1.   交互输入

read命令可以同时定义多个变量值;输入的内容默认以空格为分隔符,将值输入到对应的变量中;read尽量避免交互

如果默认值过多,最后所有的值会被赋予给最有一个变量;

如果默认值过少,多于变量则为空值

实例:

read a b c

aa bb cc

read如何输入:

read “请输入一个目录:” abc

echo  -n “请输入一个目录:”--------   -n取消换行符  ;(分号)后面加read命令进行变量输值

echo  -n “请输入一个目录:” ; read abc ---------原本的写法

常用参数:

-p  read -p “请输入一个目录:” 变量

-t  定义超时时间   最好不要写在-p的后面

read  -t 5 -p “请输入一个目录:” 变量

脚本默认值

[ -n $filename ] 判断没有为真 输入值

输入内容------------------------------------------------------------------

|                                                                                                       |

输入是否正确--------------                                                           没有输入--------------

|                                          |                                                           |                                 |

正确                              不正确,给提示                     提示输入   给出默认值

read可以同时定义多个

ls -d abc 只显示abc

2.   for循环

回顾:文件判断脚本

#!/bin/bash

read -p “输入一个文件名:” name

if [ -z $name ];then

echo “Usage:输入一个文件名,/etc/fstab”

exit 1

fi

if [ -e $name ];then

echo “提示:输入的文件不存在”

exit 2

elif [ -f $name ];then

echo  “这个文件是普通文件”

elif [ -d $name ];then

echo  “这个文件是目录文件”

elif [ -b $name ];then

echo  “这个文件是块文件”

elif [ -L $name ];then

echo “这个文件是链接文件”

else

echo   “这个文件是其他文件”

fi

修改成case语句

case语句的语法格式

case 变量 in

PATTERN1)

代码块1

;;

PATTERN2)

代码块2

;;

*)

代码库

esac

for语句的应用场景:

有一个功能,这个功能需要循环执行,只是执行对象不同;【对象必须是同类数据】

For语句的格式:

a = [‘a’,’b’,’c’]-------在python中,我们很多情况下,需要调用相应的方法去生成列表

for 变量 in 列表;do

循环体

done

练习:九九乘法表

{1..9}

for i in {1..9};do

for j in {1..9};do

echo -e -n “$j*$i=$[$i*$j]\t”

done

echo “ ”

done

echo -e 可以识别特殊字符

-e 使echo命令,能够识别特殊字符

\r 回车不换行

\n 换行符

\t 制表符

md5sum---hash加密

列表的生成方式:

1、  直接给出字符串列表

For I in a b c d e;do

循环体

done

2、  整数列表

A {start..end} //{1..1}是不行的 {1..100}==python range(1,100)

B seq 命令引用 $(seq [start [step] end]) 步长 python range{1,00,2}

Seq 20 30

练习1:ping扫描

#!/bin/bash

#

declare -i sum=0

for i in ${seq 1 254};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台电脑在线”

练习2:1到100的偶数和

#!/bin/bash

#

delcare -i sum=0

for i in ${seq 0 2 100 } ;do

let sum+=$i

done

echo “$sum”

3、  返回列表的命令

$(command)

应用场景:ls /var/log

ls /var/log | grep “*.log$”

#!/bin/bash

#

declare -i sum=0

for i in /var/log/*.log;do

#                       echo $i

if [[ $i == *.log ]];then

echo $i

let sum++

fi

done

echo $sum

练习3:netstat -tan 查看网络状态,统计LISTEN出现的次数、ESTABLISHED出现的状态

#!/bin/bash

#

declare -i sum1=0

declare -i sum2=0

declare -i sum3=0

for i in $(netstat -tan | grep "^tcp"|  awk '{print $6}');do

if [ $i="LISTEN" ];then

let sum1++

elif [ $i="ESTABLISHED" ];then

let sum2++

else

let sum3++

fi

done

echo "监听的链接有:$sum1"

echo "建立的链接有:$sum2"

echo "其他的有:$sum3"

常见的vim命令用法:

dd 剪切  5dd---剪切五次

p       粘贴

yy 复制  5yy—复制五次

p

4、  glob机制---文件名通配符的机制

$(ls /var/log)

/var/log/*.log

Test命令总结:

(1)      test的命令的option的-a,-o只在命令中使用

du命令 -h    du -h filename

例如 [ `du -h  $file |cut -d: -f1` -lt 100K -a -x $file ]

注意:做字符串匹配的时候,不支持正则以及通配符

(2)      test test == [[  ]]

再连接两个test的命令的时候,不能使用命令内部的option -a -o

一般使用 || && == != >= <=

[[ yum.log ==*.log ]]

5、  变量引用—传参

$@ $* 将参数作为for循环的列表

$0—和awk不一样

bash中$0代表其运行的脚本文件

awk中$0代表整行的内容                     ----awk是按行执行

需要多个词的时候”$@”,需要一个词的时候用”$*”

IFS-------是分隔符

keepalived –主备 需求:每一个小时去匹配一下主备设备的keepalived的配置文件是否相同

安全:1.加密 2.校验 3.原认证 4.证书认证(不可否性)

  1. 校验:hash

扩展:for语句的另外一种写法

基于C语言格式的for语句的写法:

for 变量 in列表;do

循环体

Done

for((i=0;i<=10;i++));do

循环体

Done

for((初始条件语句;条件判断语句;初始值变化语句));do

循环体

done

99乘法表:

for((i=1;i<=9;i++));do

for((j=1;j<=$i;j++));do

echo -n -e “$i*$j=$(($i*$j))\t”

done

echo “ ”

done

优点:不宜进入死循环

While语句的格式:

定义初始值----i=0

while 条件;do

循环体

Let i++ //注意 初始值的变化

done

交互输入与for语句的更多相关文章

  1. Linux--shell交互输入与循环语句--06

    一.交互输入 1.命令用法:read a b c   -> aa bb cc read命令同时可以定义多个变量值:而输入的内容默认以空格为分隔符,将值输入到对应的变量中:如果默认值输入过多,最后 ...

  2. shell中交互输入自动化

    shell中交互输入自动化 shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了.这个功能很有用的哟.好好学习. 1    利用重 ...

  3. 第七章 用户输入和while语句

    大多数编程都旨在解决最终用户的问题,为此通常需要从用户那里获取一些信息.例如,假设有人要判断自己是否到了投票的年龄,要编写回答这个问题的程序,就需要知道用户的年龄,这样才能给出答案.因此,这种程序需要 ...

  4. Python基础 之 变量、用户交互、if条件语句、while循环语句、编码、逻辑运算

    一.Python介绍 Python 崇尚优美.清晰.简单 Python是一门动态解释型的强制性定义的语言. 二.编译型和解释型的区别 编译型:一次性将所有与程序编译成二进制文件. 缺点:开发效率低,不 ...

  5. linux shell执行中需要交互输入回车,Yes/NO Y/N

    最近写自动安装脚本遇到redis-server安装的时候,需要输入3个回车,对此尝试无果,最后google比较满意的解决办法: shell 脚本需要交互,比如输入回车,输入YES/NO Y/N之类进行 ...

  6. Pyhton编程(二)之变量、用户输入及条件语句

    一:变量 变量定义的规则 1)只能由数字.字母.下划线组成(不能以数字开头) 2)不能使用关键字作为变量名 ['and', 'as', 'assert', 'break', 'class', 'con ...

  7. pl/sql快速输入select等语句

    平时对数据库操作的时候,输入DML语句,很浪费时间,我们想要这样的效果 ,输入sf,plsql就会自动输入select * from.我们需要在plsql中进行如下设置即可: 工具(tools)--& ...

  8. Python基础-week01 Python安装/变量/输入/及循环语句使用

      一.Python介绍 (1).目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,You ...

  9. 【呕心总结】python如何与mysql实现交互及常用sql语句

    9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...

随机推荐

  1. numpy2

    1.通用函数,是一种在ndarray数据中进行逐元素操作的函数.某些函数接受一个或多个标量数值,并产生一个或多个标量结果,通用函数就是对这些函数的封装. 1.常用的一元通用函数有:abs\fabs s ...

  2. 消息中间件 JMS入门

    1. JMS入门 1.1消息中间件 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环 ...

  3. [BZOJ 4025]二分图(线段树分治+带边权并查集)

    [BZOJ 4025]二分图(线段树分治+带边权并查集) 题面 给出一个n个点m条边的图,每条边会在时间s到t出现,问每个时间的图是否为一个二分图 \(n,m,\max(t_i) \leq 10^5\ ...

  4. Scrapy 教程(十)-管道与数据库

    Scrapy 框架将爬取的数据通过管道进行处理,即 pipelines.py 文件. 管道处理流程 一.定义 item item 表示的是数据结构,定义了数据包括哪些字段 class TianqiIt ...

  5. 一:jvm的五大内存区(内存结构)

    jvm五大内存区域(即jvm运行时数据区),描述的是类被加载时,经过解析后,存储到特定的数据区.方法区和堆是所有线程共享的,而栈和计数器是线程私有的.栈处理程序运行的问题,堆处理数据的存储问题.所以才 ...

  6. json.dumps、json.dump、json.loads、json.load的区别

    json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps() 和 json.loads() 下面是如何将Python数据结构转换为json impor ...

  7. React中配置Sass引入.scss文件无效

    React中配置Sass引入.scss文件无效 在react中使用sass时,引入.scss文件失效尝试很多方法没法解决,最终找到解决方法,希望能帮助正在坑里挣扎的筒子~ 在node_modules文 ...

  8. axios 文件流下载

    this.axios .post(this.baseUrl+"/exportUser", { admin: "",keys: "",keyw ...

  9. 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。

    方法一:利用excellibrary,http://code.google.com/p/excellibrary/ excellibrary是国人写的开源组件,很容易使用,可惜貌似还不支持.xlsx( ...

  10. Out of memory: Kill process 25280 (php-fpm) score 86 or sacrifice child

    php-fpm 耗尽服务器内存的办法 java服务今天突然宕机,通过 cat /var/log/messages进行查看,发现是系统内存溢出导致系统把java的进程杀掉了 使用top查看系统内存使用情 ...