【Shell教程】四----输入输出,条件判断,循环
Shell输出 echo命令
在shell中,echo 指令用于字符串的输出
命令格式:
echo string
可以使用 (反斜号)‘’(单引号)""(双引号)包含字符串,具体功能在第二节讲过。
echo "Hello World"
输出:
Hello World
echo `date`
输出:
Shell输入 read读取控制台输入
read(选项)(参数)
选项:
- -p:指定读取值时的提示符;
- -t:指定读取值时等待的时间(秒)。
参数:
- 变量:指定读取值的变量名
测试:
read -t 7 -p "Enter your name in 7 seconds " NAME
echo $NAME
输出:
流程控制
if 判断
基本语法:
单分支if语句:
if [ 条件判断式 ];
then 程序
fi
双分支if条件语句
if [ 条件判断式 ]then条件成立时,执行的程序else条件不成立时,执行的另一个程序
fi
多分支if条件语句
if [ 条件判断式1 ]then当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]then当条件判断式2成立时,执行程序2
…省略更多条件…
else当所有条件都不成立时,最后执行此程序
fi
注意:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格
- if后要有空格
例程:
1.判断普通文件$file是否存,若不存在,则新建一个
#!/bin/bashread -t 7 -p "Enter file name in 7 seconds " fileif [ ! -f "$file" ]; thentouch "$file"
fi
2.查看当前操作系统类型
#!/bin/shSYSTEM=`uname -s`
if [ $SYSTEM = "Linux" ] ; thenecho "Linux"
elif[ $SYSTEM = "FreeBSD" ] ; thenecho "FreeBSD"
elif[ $SYSTEM = "Solaris" ] ; thenecho "Solaris"
elseecho "What?"
fi
3.判断用户输入的是什么文件
[root@localhost ~]$ vi sh/if-elif.sh
#!/bin/bash
#判断用户输入的是什么文件read -p "Please input a filename: " file
#接收键盘的输入,并赋予变量file
if [ -z "$file” ]
#判断file变量是否为空thenecho "Error, please input a filename"#如果为空,执行程序1,也就是输出报错信息exit 1#退出程序,并返回值为Ⅰ(把返回值赋予变量$P)
elif [ ! -e "$file” ]#判断file的值是否存在thenecho "Your input is not a file!"#如1果不存在,则执行程序2exit 2#退出程序,把并定义返回值为2
elif [ -f "$file” ]#判断file的值是否为普通文件thenecho "$file is a regulare file!”#如果是普通文件,则执行程序3
elif [ -d "$file” ]#到断file的值是否为目录文件thenecho "$file is a directory!"#如果是目录文件,网执行程序4
elseecho "$file is an other file!”#如果以上判断都不是,则执行程序5
fi
4.检测执行脚本的用户是否具有权限
if [ "$(whoami)" != 'root' ]; thenecho "You have no permission to run $0 as non-root user."exit 1;
fi
case条件语句
case … esac 为多选择语句,是一种多分枝选择结构
基本语法:
case $变量名 in"值1")如果变量的值等于值1,则执行程序1;;"值2")如果变量的值等于值2,则执行程序2::…省略其他分支…*)如果变量的值都不是以上的值,则执行此程序;;
esac
注意:
- case首行末尾必须为“in”,每一个匹配必须以右括号“)”结束
- 取值可以为变量或常数
- 双分号“;;”表示执行结束 相当于break
- 如果所有的值都不符合,则执行 “*)”中的程序 “*)”表示默认模式
- case语句以“case”开头,以“esac”结尾
例程:
#!/bin/bashread -p "请输入一个数字1 到4,并按Enter确认:" aNumcase $aNum in1) echo 'You select 1';;2) echo 'You select 2';;3) echo 'You select 3';;4) echo 'You select 4';;*) echo 'You do not select a number between 1 to 4';;esac
for 循环
基本语法:
语法一:
for 变量 in 值1 值2 值3 ..
do 程序
done
语法二:
for (( 初始值;循环控制条件;变量变化 ))do程序done
例程:
1. 分别用∗和*和∗和@打印输入的参数
#!/bin/bash
#打印输入的参数
#使用$*
for i in "$*"
doecho "参数为: $i"
doneecho "====="
#使用$@
for j in "$@"
doecho "参数为: $j"
done
2.输出1加到100的值
#!/bin/bash
#定义一个变量
SUM=0
for((i=0;i<=100;i++))
doSUM=$[$SUM+$i]
done
echo "sum=$SUM"
3.批量删除用户
[root@localhost ~]$ vi sh/userdel.sh
#!/bin/bash
#批量删除用户user=$(cat /etc/passwd | grep " /bin/bash"|grep -v "root"Icut -d ":" -f 1)
#读取用户信息文件,提取可以登录用户,取消root用户,截取第一列用户名for i in $user
#循环,有多少个普通用户,循环多少次douserdel -r $i#每次循环,删除指定普通用户done
while 循环
对于while循环来讲,只要条件判断式成立,循环就会一直进行,直到条件判断式不成立,跳出循环。
基本语法:
while [ 条件判断式 ]
do程序
done
例程:
1.从命令行输入一个数n,统计从1+…+n 的值是多少
#!/bin/bash
SUM=0
i=0
while [$i -le $1]
doSUM=$[$SUM+$i]i=$[$i+1]
done
echo "sum=$SUM"
until循环
until 循环与 while 循环在刚好相反until循环时只要条件判断式不成立(flase)则进行循环,并执行循环程序。一旦循环条件成立(true),则终止循环。
基本语法:
until [ 条件判断式 ]do程序done
例程:
1.从1加到100
#!/bin/bash
#从1加到100i=1
s=0
#t给变量i和变量s赋值until [ $i -gt 100 ]
#循环直到变量i的值大于100,就停止循环dos=$(( $s+$i ))i=$(( $i+1 ))done
echo "The sum is: $s"
函数
shell 可以用户定义函数,然后在shell脚本中可以随便调用
基本语法:
function 函数名 () {程序
}
例程:
1.获取用户输入一个数n,统计从1+…+n 的值是多少
#!/bin/bash
#接收用户输入的数字,然后从1加到这个数字function sum () {#定义函数sums=0for (( i=0; i<=$num;i=i+1 ))#循环直到i大于$1为止。$1是函数sum 的第一个参数#在函数中也可以使用位置参数变量,不过这里的$1指的是函数的第一个参数dos=$(( $i+$s ))doneecho "The sum of 1+2+3...+$1 is :$s"#输出1加到$1的和
}read -p "Please input a number: " -t 30 num
#接收用户输入的数字,并把值赋予变量numif [ -z "$num"]
#判断变量y是否为空,以确定变量num中是否为数字thensum $num#调用sum函数,并把变量num的值作为第一个参数传递给sum函数
elseecho "Error!! Please input a number!"#如果变量num 的值不是数字,则输出报错信息
fi
exit语句
linux的exit命令,用于退出当前用户的登录状态。在Shell脚本中,exit语句用来退出当前脚本。也就是说,在Shell脚本中,只要碰到了exit语句,后续的程序就不再执行,而直接退出脚本。
基本语法:
exit [返回值]
若不设置返回值,最后执行的一条命令的退出码即为脚本的退出状态码。状态值0代表执行成功,其他值代表执行失败
在程序中使用exit,我们可以在不同的位置定义不同的返回值,可以通过查询$? 语句,来查看返回值
比方说程序出现错误返回-1 执行;
exit -1
程序正常运行完,最后一行就
exit 1
例程:
判断文件是否存在,存在返回1 不存在返回8
#!/bin/bash
FILE=hello.c
if [ -e $FILE ]; thenecho " 存在 $FILE "exit 1
elseecho "不存在 $FILE"exit 8
fi
【Shell教程】四----输入输出,条件判断,循环相关推荐
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操并 ...
- Ansible 条件判断 循环 handlers 任务失败 文件管理的使用
文章目录 Ansible 条件判断 循环 handlers 任务失败 文件管理的使用 1.条件判断 1.1测试多个条件 1.2循环和有条件任务 2. handlers 3. 任务失败 3.1忽略任务失 ...
- python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类
##人生苦短,我用python ##课程内容 #条件判断 #循环 #类:简单介绍类的用法##条件判断 #if condiction:# dosomething #else: # dosomething ...
- VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略
VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...
- python重复元素判定编程_从零开始学Python编程四:条件判断与循环
前面已经介绍了不少Python基础知识,大家不要觉得不耐烦,想要学好Python,做好Python开发,一定要打牢基础.大家也发现了,Python中很多基础知识和数学算法是一样的,比如今天要教给大家的 ...
- Vue 模板语法 插值操作 绑定属性 计算属性 事件监听 条件判断 循环遍历 阶段案例
1 插值操作 1.1 Mustache语法 也就是双大括号 {{ }} <div id="app"> <!-- mustche语法中,不仅可以直接写变量,也可以写 ...
- 总结:shell中的if条件判断
一.if 的基本语法 if [ command ];thenxxx elif [ command ];thenxxx elsexxx fi 二.常见的一些写法案例 1.if [ "x${va ...
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if ...
- Vue 事件绑定 事件修饰符 条件判断 循环遍历
事件绑定 v-on:事件 简写:@事件 <div id="app"><h2>{{counter}} </h2><button v-on:c ...
最新文章
- appium-DesiredCapability详解与实战
- 4位华人博士荣获2022苹果奖学金!其中1名浙大在读博士
- android 软件实现架构。
- 微型计算机地未来发展,微型计算机的发展历史、现状和未来(最新) PDF.doc
- mysql 5.7 双主配置_MySQL5.7.18 双主配置
- SAP CRM One Order关于索引表CRMD_ORDER_INDEX的一些性能问题的分析
- 带你根据源码了解View的事件触发流程,主要讲解为什么子View返回true,ViewGroup就无法接收到事件的过程
- 统计学基本概念(及辨异)
- 五大媒体播放器的Andr​​oid
- 几种流行Webservice框架性能对比(转载、拼接)
- SWF游戏软件逆向基础知识1
- 传奇手游服务器搭建_传奇手游架设服务器教程
- CF487E Tourists
- 案例分析默写题1__立项管理_可行性研究的内容_可行性研究报告的内容
- 解决:香橙派orangepi3lts网口用不了 网口灯不亮 没反应
- 去除最新版迅雷下载器右侧浏览器
- 小红书如何营销?各大品牌小红书运营投放营销策划方案合集(13份)
- MobPush for Flutter
- [NOI2017]蔬菜
- Linux命令 - head命令