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教程】四----输入输出,条件判断,循环相关推荐

  1. Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set

    本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操并 ...

  2. Ansible 条件判断 循环 handlers 任务失败 文件管理的使用

    文章目录 Ansible 条件判断 循环 handlers 任务失败 文件管理的使用 1.条件判断 1.1测试多个条件 1.2循环和有条件任务 2. handlers 3. 任务失败 3.1忽略任务失 ...

  3. python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类

    ##人生苦短,我用python ##课程内容 #条件判断 #循环 #类:简单介绍类的用法##条件判断 #if condiction:# dosomething #else: # dosomething ...

  4. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

  5. python重复元素判定编程_从零开始学Python编程四:条件判断与循环

    前面已经介绍了不少Python基础知识,大家不要觉得不耐烦,想要学好Python,做好Python开发,一定要打牢基础.大家也发现了,Python中很多基础知识和数学算法是一样的,比如今天要教给大家的 ...

  6. Vue 模板语法 插值操作 绑定属性 计算属性 事件监听 条件判断 循环遍历 阶段案例

    1 插值操作 1.1 Mustache语法 也就是双大括号 {{ }} <div id="app"> <!-- mustche语法中,不仅可以直接写变量,也可以写 ...

  7. 总结:shell中的if条件判断

    一.if 的基本语法 if [ command ];thenxxx elif [ command ];thenxxx elsexxx fi 二.常见的一些写法案例 1.if [ "x${va ...

  8. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  9. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

    linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if ...

  10. Vue 事件绑定 事件修饰符 条件判断 循环遍历

    事件绑定 v-on:事件 简写:@事件 <div id="app"><h2>{{counter}} </h2><button v-on:c ...

最新文章

  1. appium-DesiredCapability详解与实战
  2. 4位华人博士荣获2022苹果奖学金!其中1名浙大在读博士
  3. android 软件实现架构。
  4. 微型计算机地未来发展,微型计算机的发展历史、现状和未来(最新) PDF.doc
  5. mysql 5.7 双主配置_MySQL5.7.18 双主配置
  6. SAP CRM One Order关于索引表CRMD_ORDER_INDEX的一些性能问题的分析
  7. 带你根据源码了解View的事件触发流程,主要讲解为什么子View返回true,ViewGroup就无法接收到事件的过程
  8. 统计学基本概念(及辨异)
  9. 五大媒体播放器的Andr​​oid
  10. 几种流行Webservice框架性能对比(转载、拼接)
  11. SWF游戏软件逆向基础知识1
  12. 传奇手游服务器搭建_传奇手游架设服务器教程
  13. CF487E Tourists
  14. 案例分析默写题1__立项管理_可行性研究的内容_可行性研究报告的内容
  15. 解决:香橙派orangepi3lts网口用不了 网口灯不亮 没反应
  16. 去除最新版迅雷下载器右侧浏览器
  17. 小红书如何营销?各大品牌小红书运营投放营销策划方案合集(13份)
  18. MobPush for Flutter
  19. [NOI2017]蔬菜
  20. Linux命令 - head命令

热门文章

  1. flask Form表单数据传递与取值
  2. pandas将series所有值转变为字符串类型
  3. Ndarry 拉伸为一个list
  4. java多线程命名,命名线程和当前线程
  5. mysql 排名_MySQL和Hive中的排名问题
  6. java重新_Java程序重新配置教程
  7. oracle 11g r2 rac到单实例的dg
  8. SpringCloud04 服务配置中心、消息总线、远程配置动态刷新
  9. JVM 一套卷,助你快速掌握优化法则
  10. SQL Server索引总结二