导读 和Java、PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。

一、shell条件语句(if用法)

if语句结构[if/then/elif/else/fi]

if 条件测试语句
then
action
[elif 条件
action
else
action
]
fi

shell命令,可以按照分号分割,也可以按照换行符分割。如果想一行写入多个命令,可以通过“';”分割,如:

[chengmo@centos5 ~]$ a=5;if [[ a -gt 4 ]] ;then echo 'ok';fi;

实例:(test.sh)

#!/bin/sh
scores=40;
if [[ $scores -gt 90 ]]; then
echo "very good!";
elif [[ $scores -gt 80 ]]; then
echo "good!";
elif [[ $scores -gt 60 ]]; then
echo "pass!";
else
echo "no pass!";
fi;

二、循环语句(for,while,until用法):

(1)for循环使用方法(for/do/done)
1.for … in 语句——语法结构

for 变量 in seq字符串       # seq字符串 只要用空格字符分割,每次for…in读取时候,就                                                              会按顺序将读到值,给前面的变量。
do
action
done

实例(testfor.sh):

#!/bin/sh
for i in $(seq 10); do     #seq 10 产生 1 2 3 …… 10空格分隔字符串
echo $i;
done;

2.for((赋值;条件;运算语句))

for((赋值;条件;运算语句))
do
action
done;

实例(testfor2.sh):

#!/bin/sh
for((i=1;i<=10;i++));do
echo $i;
done;

(2)while循环使用(while/do/done)

while 条件语句
do
action
done;

实例1:

#!/bin/sh
i=10;
while [[ $i -gt 5 ]];do
echo $i;
((i--));
done;

运行结果:

sh testwhile1.sh
10
9
8
7
6

实例2:(循环读取文件内容:)

#!/bin/sh
while read line;do
echo $line;
done < /etc/hosts;

运行结果:

sh testwhile2.sh
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 centos5 localhost.localdomain localhost

(3)until循环语句——语法结构

until 条件              #直到满足条件,就退出。否则执行action.
do
action
done

实例(testuntil.sh):

#!/bin/sh
a=10;
until [[ $a -lt 0 ]];do
echo $a;
((a—));
done;

结果:

sh testuntil.sh
10
9
8
7
6
5
4
3
2
1
0
三、shell选择语句(case、select用法)

(1)case选择语句使用(case/esac)——语法结构

case $arg in
pattern | sample) # arg in pattern or sample
;;
pattern1) # arg in pattern1
;;
*) #default
;;
esac

说明:pattern1 是正则表达式,可以用下面字符:
* 任意字串 ? 任意字元
[abc] a, b, 或c三字元其中之一
[a-n] 从a到n的任一字元
| 多重选择

实例:

#!/bin/sh
case $1 in
start | begin)
echo "start something"
;;
stop | end)
echo "stop something"
;;
*)
echo "Ignorant"
;;
esac

运行结果:

testcase.sh start
start something

(2)select语句使用方法(产生菜单选择)——语法

select 变量name in seq变量
do
action
done

实例:

#!/bin/sh
select ch in "begin" "end" "exit"
do
case $ch in
"begin")
echo "start something"
;;
"end")
echo "stop something"
;;
"exit")
echo "exit"
break;
;;
*)
echo "Ignorant"
;;
esac
done;

运行结果:

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

转载于:https://www.cnblogs.com/linuxprobe/p/5590387.html

linux shell 流程控制相关推荐

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

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

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

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

  3. 3.Linux Shell流程控制

    1.if/else结构 if condition thenstatements elif condition thenstatements elsestatements fi 2.条件 与C语言不同的 ...

  4. shell 脚本比较字符串相等_LINUX快速入门第十六章:Shell 流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?phpif (isset($_GET["q"])) { s ...

  5. Shell——流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) {s ...

  6. Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo

    文章目录 参考资料 运行环境 一.流程控制 1.1 if 判断 1.2 case 语句 1.3 for 循环 1.4 while 循环 二. read 读取控制台输入 三.函数 3.1 系统函数 ba ...

  7. linux控制流程,Linux - Bash - 流程控制

    sh的流程控制不可为空,不能什么都不能做,不能像php这样: if (isset($_GET["q"])) { search(q); } else { // 不做任何事情 } 在s ...

  8. false shell 判断_六、Shell流程控制-if判断语句

    1. shell中的运算 1.1 数学比较运算 -eq 等于 -ne 不等于 -lt 小于 -gt 大于 -le 小于等于 -ge 大于等于 浮点数的比较建议将数字等比放大至整数进行比较,例如 #比较 ...

  9. Shell——流程控制(if、case、for、while)

    文章目录 一.if语句 1.基本语法 2.注意事项 3.示例演示 三.case语句 1.基本语法 2.注意事项 3.示例演示 二.for循环 1.基本语法 2.示例演示 四.while循环 1.基本语 ...

最新文章

  1. RK3288 GMAC整理
  2. 《Performance Overhead of Atomic Crosschain Transactions》
  3. 关于farpoint公司的控件:SPREAD for .NET Windows Forms Ed.的一些简单方法.
  4. mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
  5. Flink流处理操作符
  6. 使用Ant 实现批量打包Android应用
  7. vsftpd安装配置_CentOS7配置vsftpd虚拟用户模式详解
  8. 软件工程期末考试题库(超全)
  9. STM32使用HAL库驱动W5500
  10. python生成简单二维码_使用Python生成个性二维码
  11. WZOI-314石头剪子布
  12. 微信小程序 data命名不能大写
  13. XTransfer技术专家康康:从普通程序员到架构师的进化之路
  14. 数据挖掘——数据挖掘的起源
  15. Java画图程序设计
  16. element表格里面放图片_elementUI 表格中预览图片
  17. 如何从Mac到HomePod播放音频
  18. 用Python爬取并分析了B站最热排行榜,我发现了这些秘密
  19. classtwo_单表查询
  20. 音频卡是计算机硬件吗,绝对干货:关于声卡你需要知道的几点知识

热门文章

  1. 安装php时,make步骤报错make: *** [ext/gd/gd.lo] Error 1
  2. window 服务(一)
  3. 如何在戴尔M系列交换机上配置简单交换模式
  4. 2010.9.29 今日问题
  5. AI and logistics Patent
  6. What you should do if you want to become more professional in career?
  7. 如何做一份出色的竞品分析?(一)
  8. 哪里的草莓质量又好又便宜呢?水果批发市场(前提你买的得多)
  9. university of liverpool writing techniques
  10. 无需predetermine一条路