Shell 学习笔记(三)

条件语句

if

if 语句语法格式:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):

if [ 10 -gt 1 ]; then echo "true"; fi

if else

if else 语法格式:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if else-if else

if else-if else 语法格式:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

if else 实例

a=10
b=20
if [ $a -lt $b ]
then
   echo "a 小于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
   elif [ $a == $b ]
then
   echo "a 等于 b"
else
   echo "没有符合的条件"
fi

#判断顺序执行,如有满足条件的,下面的判断不再继续。
>>输出结果
a 小于 b

case … esac

case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号(;;)表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case 的取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间直至遇见两个分号(;;)。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

# case ... esac 语法格式如下:
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

case … esac 实例

aNum=3
case $aNum in
    1)  echo '星期一'
    ;;
    2)  echo '星期二'
    ;;
    3)  echo '星期三'
    ;;
    4)  echo '星期四'
    ;;
	5)  echo '星期五'
    ;;
    *)  echo '玩去吧!!!'
    ;;
esac

>>输出结果
星期三
site="baidu"
case "$site" in
   "google") echo "Google 搜索"
   ;;
   "taobao") echo "淘宝网"
   ;;
   "baidu") echo "百度"
   ;;
esac

>>输出结果
百度

test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

作用相当于代替了 方括号

if test 10 -eq 20
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

>>输出结果
两个数不相等!
if test "abcd" = "asdd"
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

>>输出结果
两个字符串不相等!

循环

for 循环

#顺序输出当前列表中的数字:(下面代码可以写成 for loop in {1..5})
for loop in 1 2 3 4 5
do
    echo $loop
done
echo ================
# 顺序输出字符串中的字符:
for str in This is a string
do
    echo $str
done

>>输出结果
1
2
3
4
5
================
This
is
a
string

while 循环

a=1
while(( $a<=5 ))
do
	let "a++"
    echo $a
done
echo "改变加加的位置"
b=1
while(( $b<=5 ))
do
    echo $b
    let "b++"
done

>>输出结果
2
3
4
5
6
改变加加的位置
1
2
3
4
5

while 循环读取键盘信息

下面的例子中,输入信息被设置为变量FILM,按结束循环。

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
    echo "是的!$FILM 是一个好网站"
done

在键盘输入 asdqwe 后,输出结果如下

按下 <CTRL-D> 退出
输入你最喜欢的网站名: sdasdqwew
是的!asdqwe 是一个好网站

until 循环

until 循环执行一系列命令直至条件为 true 时停止。

until 循环与 while 循环在处理方式上刚好相反。

一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。

# until 语法格式:
# condition 指条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。
until condition
do
    command
done
a=0
until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

>>输出结果
0
1
2
3
4
5
6
7
8
9

case … esac

在这里插入代码片

无限循环(了解)

无限循环语法格式:
while :
do
    command
done

# 或者
while true
do
    command
done

# 或者
for (( ; ; ))

跳出循环

break命令

break命令允许跳出所有循环(终止执行后面的所有循环)。

for a in {1..10}
do
if [ $a == 8 ]
then
break
fi
echo $a
done

输出结果

1
2
3
4
5
6
7

continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

for a in {1..10}
do
if [ $a == 8 ]
then
continue
fi
echo $a
done

输出结果

1
2
3
4
5
6
7
9
10
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值