交互输入与for语句
交互输入与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.证书认证(不可否性)
- 校验: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语句的更多相关文章
- Linux--shell交互输入与循环语句--06
一.交互输入 1.命令用法:read a b c -> aa bb cc read命令同时可以定义多个变量值:而输入的内容默认以空格为分隔符,将值输入到对应的变量中:如果默认值输入过多,最后 ...
- shell中交互输入自动化
shell中交互输入自动化 shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了.这个功能很有用的哟.好好学习. 1 利用重 ...
- 第七章 用户输入和while语句
大多数编程都旨在解决最终用户的问题,为此通常需要从用户那里获取一些信息.例如,假设有人要判断自己是否到了投票的年龄,要编写回答这个问题的程序,就需要知道用户的年龄,这样才能给出答案.因此,这种程序需要 ...
- Python基础 之 变量、用户交互、if条件语句、while循环语句、编码、逻辑运算
一.Python介绍 Python 崇尚优美.清晰.简单 Python是一门动态解释型的强制性定义的语言. 二.编译型和解释型的区别 编译型:一次性将所有与程序编译成二进制文件. 缺点:开发效率低,不 ...
- linux shell执行中需要交互输入回车,Yes/NO Y/N
最近写自动安装脚本遇到redis-server安装的时候,需要输入3个回车,对此尝试无果,最后google比较满意的解决办法: shell 脚本需要交互,比如输入回车,输入YES/NO Y/N之类进行 ...
- Pyhton编程(二)之变量、用户输入及条件语句
一:变量 变量定义的规则 1)只能由数字.字母.下划线组成(不能以数字开头) 2)不能使用关键字作为变量名 ['and', 'as', 'assert', 'break', 'class', 'con ...
- pl/sql快速输入select等语句
平时对数据库操作的时候,输入DML语句,很浪费时间,我们想要这样的效果 ,输入sf,plsql就会自动输入select * from.我们需要在plsql中进行如下设置即可: 工具(tools)--& ...
- Python基础-week01 Python安装/变量/输入/及循环语句使用
一.Python介绍 (1).目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,You ...
- 【呕心总结】python如何与mysql实现交互及常用sql语句
9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...
随机推荐
- RabbitMQ使用(上)
1. 说明 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方, ...
- Matlab——表达式 阵列与矩阵的创建
表达式 指令过长: 如果一个指令过长可以在结尾加上... 下一行继续写指令即可 若不想每次都显示运算结果,只需在运算式最後加上分号(:)即可 注释 基本的算术运算有: 加 (+).减 (-).乘 (* ...
- 获取当前页面的title
#-*-coding:utf-8-*-from selenium import webdriverdriver = webdriver.Firefox()driver.get("https: ...
- Arm-linux-gcc-4.3.2安装步骤 (转)
http://blog.chinaunix.net/uid-26119896-id-3302233.html 安装交叉编译工具链: 1.首先以root用户登入 2.复制arm-linux-gcc-4. ...
- 安装Git并关联
下载git 打开git bash 生成key将 key绑定到帐号 输入命令 ssh-keygen -t rsa -C 'LoginName' 根据命令生成的地址找到对应文件复制密钥 打开github登 ...
- 006 Notepad++ 运行 C/C++
目录 0. 前言 1. 准备 2. 开工 setp 1 step 2 step 3 step 4 step 5 step 6 3. 修改与删除 3.1修改名称.快捷键 3.2 删除 4. 运行 5. ...
- 题解 CF292A 【SMSC】
蒟蒻本想发一篇黑题题解,没想到黑题竟然掉紫了QwQ. 趁着题解还只有几篇,赶紧来发一篇嘿嘿嘿. 这道题其实很简单,题解其实都不需要 AC代码: #include<bits/stdc++.h> ...
- 用Java构建一个简单的WebSocket聊天室
前言 首先对于一个简单的聊天室,大家应该都有一定的概念了,这里我们省略用户模块的讲解,而是单纯的先说说聊天室的几个功能:自我对话.好友交流.群聊.离线消息等. 今天我们要做的demo就能帮我们做到这一 ...
- ModelForm操作
ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信 ...
- 如何让css隐藏滚动条 兼容谷歌、火狐、IE等各个浏览器
项目中,页面效果需要展示一个页面的移动端效果,使用的是一个苹果手机样式背景图,咋也没用过苹果,咋也不敢形容. 如下图所示: 在谷歌浏览器如图一滚动条顺利隐藏,但是火狐就如图二了,有了滚动条丑的一批. ...