Rootop 服务器运维与web架构

shell编程流程控制语句 if for while until用法

# 当在一行上有多个操作时,需要用命令分割符 分号 ; 隔开,比如 echo a; echo b
# 分号是用来隔断每个语法关键字或命令

# if 用法

#!/bin/bash
if [ 1 = 1 ] # 注意空格不能少,少了就报错 1=1是赋值 1 = 1 是比较 而且中括号跟表达式之间也有空格,少了也报错
then
 echo true
else
 echo false
fi

# 也可以这样表示

#!/bin/bash
if [ 1 = 1 ]; then
 echo true; echo correct
else
 echo false; echo incorrect
fi

# 也可以全部扔到一行上 风格太丑,不用

#!/bin/bash
if [ 1 = 1 ]; then echo true; echo correct; else echo false; echo incorrect; fi

其实[] 就是test 命令的简写方式

# for循环需要两层括号

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

# 或者这样 do放到一行上

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

# for in 用法

#!/bin/bash
for i in 'ab bbb' b c; do # 不需要括号包起来,不需要逗号隔开,用空格分隔 带空格的字符串用单/双引号引起来
 echo $i
done

# while 用法

#!/bin/bash
i=10
while [[ $i -gt 5 ]]; do # [[]] 是正确判断条件写法 上面提到过[]是test的简写
 echo $i
 ((i--))
done

# until 用法
# 意思是当条件满足就退出,否则就执行语句, 感觉比较另类

#!/bin/bash
i=10
until [[ i -lt 0 ]]; do
 echo $i
 ((i--))
done

# case 用法

#!/bin/bash
read i

case $i in
 a)
 echo it is a
 ;;

 b)
 echo it is b
 ;;

 c)
 echo it is c
 ;;

 d|e)
 echo it is d or e
 ;;

 [fgh])
 echo it is f or g or h
 ;;

 [i-l])
 echo it is i-l
 ;;

 ?)
 echo it is single unit
 ;;

 *)
 echo other
esac

# * 任意字串, ? 任意单个字符, [abc] a, b, 或c三字元其中之一, [a-n] 从a到n的任一字元 ,| 多重选择 或者的意思

# select 用法
# select 一般和case配合使用,会出现一个菜单,提示选择前面的数字,而且如果没有退出的话,会继续提示选择,如图。

#!/bin/bash
select i in a b c
do
case $i in
 a)
 echo aaa
 exit
 ;;

 b)
 echo bbb
 ;;

 c)
 echo ccc
 ;;

 *)
 echo other
 ;;
esac
done

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3599.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。