shell(一)函数(for while until case select)

函数的调用

1、参数的定义

shell函数在定义的时候不能指明参数,但是在调用的时候是可以传递参数的,
并且给他传递什么参数就会就收什么参数

2、参数的使用
在这里插入图片描述

计算所有参数的和
在这里插入图片描述

$@:表述函数的所有参数
$?:表示函数的退出值

if语句

if语句的格式

if 
then
	echo
else
	echo
fi

if test命令

数值的比较

1、test命令的使用说明
test是shell的内置命令,用来检测某个条件是否成立
test通常和if语句一起使用,并且大部分if语句都依赖test
test命令有很多选项,可以进行数值,字符串和文件的检测
test命令的使用方法为:test expression
当test判断expression成立的时候,退出状态为0,否则不为0
test命令可以简写为 [ ],用法为 [ expression ]
expression两边有空格,使用[]的时候,需要两侧添加括号

2、常用的判断条件
在这里插入图片描述
例子1:判断两个参数数值的大小

#!/bin/bash
val1=10
val2=12

if [ $val1 -gt 5 ]
then
	echo "The test value $val1 is greater than 5"
fi

if [ $val1 -eq $val2 ]
then
	echo "The value is equal"
else
	echo "The values are different"
fi

在这里插入图片描述
3、不能在test命令中使用浮点值
在这里插入图片描述

字符串的比较

==大于号和小于号符号必须转义=,如果不转义,shell会将 > 当作重定向符,将变量的值当作文件名输出 ==

str1 = str2		检查str1和str2是否相同
str1 != str2	检查str1和str2是否不同
str1 < str2		检查str1是否比str2小
str1 > str2		检查str1是否比str2大
-n str1			检查str1的长度是否非0
-z str1			检查str1的长度是否为0

= 和 != 比较的是字符串的内容是否相等 ;> 和 < 比较的是字符串的长短,-n和-z比较的是字符串是否为空。在这里插入图片描述在这里插入图片描述

未被定义的变量也会被使用为空
在这里插入图片描述

文件的比较

在这里插入图片描述
1、目录的检查-d
$HOME 获取当前用户的家目录在这里插入图片描述
2、检查目录和文件是否存在-e
在这里插入图片描述
3、-f检查file是否存在并且是否是一个文件

#!/bin/bash if [ "$1" == '' ] then echo "Pleae input the file name" exit 1 fi if [ -e $1 ] then echo "The file exists" if [ -f $1 ] then echo "The file is a regular file" else echo "The file is not a regular file" fi else echo "The file doesnot exists" fi
在这里插入图片描述

while语句

while循环是shell脚本中最简单的一种循环,
当条件满足的时候,while重复执行一组语句,
当条件不满足的时候,就退出循环

while语句的结构

1、while后面的condition满足时,程序进入循环体,如果do后面的条件不满足的时候,直接执行done后面的程序。
2、while循环体中必须有语句越来越接近于不满足condition的条件,如果不这样,则会进入一个死循环。
3、while中if else中的用法相同。

while condition
do
	statements
done

其中condition表示判断条件
statements表示要执行的语句(语句可以是一条也可以是多条)
do和done都是shell中的关键字

例子:计算1到100的和

在这里插入图片描述

#!/bin/bash

i=1
sum=0
while ((i <= 100))
do
	((sum +=i))
	((i++))
done
echo "SUM is $sum"

在这里插入图片描述

键盘录入命令read

【read的使用方法】
read 【选项】 【变量名】

-p 在等待read输入时,输出提示信息
-t 秒数:read命令会一直等用户输入,使用此选项可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行
-s 隐藏输入的数据,适用于机密信息的输入

2、计算从n到m的值
这里使用到read命令

#!/bin/bash
read -p "PLease inpit the small number:" -t 3 m    ###其中-t表示等待用户输入的时间,如果超过3s的时间,就直接退出
read -p "PLease inpit the larger number:" n    ####-p表示等待用户输入时候的提示
sum=0
while ((m<=n))
do
	((sum += m))
	((m++))
done
echo "SUM is $sum"

3、练习
实现一个简单的计算器,用户每输入一个数字,计算所有数字的和,并按CTRL+D组合键结束读取

在这里插入图片描述

#!/bin/bash
sum=0
echo "Please input the numer that ou want to calculate,and you can use CTRL+D to stop inputing"
while read  m
do
	((sum +=m))
done
echo "The SUM is $sum"

在这里插入图片描述

shell中until循环

until和while恰好相反,只有当until中的条件不成立的时候才进入循环体:

until condition ###condition表示判断条件
do
		statements   ###statements表示要执行的语句,可以是一条也可以是多条
done 
###do和done都是shell中的关键字

until执行流程:
1、先对condition进行判断,如果条件不成立,则进入ubtil循环中(do和done之间的语句),这样就是一次循环的执行
2、每次执行到done的时候就会对condition进行重新判断,如果条件不成立,则进入循环体,如果条件成立则退出整个的until循环,执行done后面的其他shell语句
3、如果一开始condition的条件就不成立,则不会进入到until循环体中

1、计算从1加到100

#!/bin/bash
n=1
sum=0
until	((n>100))
do
	((sum +=n))
	((n ++))
done
echo "The SUM is $sum"

在这里插入图片描述

shell中的for循环

在这里插入图片描述

C语言风格的for

例题1:使用for语句计算1到100的和

#!/bin/bash
sum=0
for ((i=1;i<=100;i++))   ###这里是判断条件初始化条件;
do
	((sum +=i))
done
echo "$sum"

Python语言风格的for

1、给出一个取值范围:只支持数字和字母
for i in {1…100}

#!/bin/bash
sum=0
for i in {1..100}  ##其中1为start值,100为end值,中间使用两个点隔开
do
	((sum +=i))
done
echo "$sum"

在这里插入图片描述

2、直接给出具体的值
for i in “111” “222” “333”

#!/bin/bash
for i in "a" "b" "c"   ###中间使用空格隔开
do
	echo "$i"
done

在这里插入图片描述

获取命令的执行结果

1、使用反引号:``

#!/bin/bash
sum=0
for i in `seq 2 2 100`   ## ``获取结果
do
	((sum +=i))
done
echo $sum

2、使用$()

#!/bin/bash
sum=0
for i in $(seq 2 2 100)
do
	((sum +=i))
done
echo $sum

在这里插入图片描述

通配符

显示当前目录下的*.sh文件

[root@reg for]# cat 07.sh 
#!/bin/bash
for filename in *.sh
do
	echo $filename
done
[root@reg for]# sh 07.sh 
01.sh
02.sh
03.sh
04.sh
05.sh
06.sh
07.sh

使用特殊符号

$@表示列表中的所有参数

#!/bin/bash
function func(){
	for str in $@
	do
		echo $str
	done

}
func C++ Java python Shell c#
[root@reg for]# sh 08.sh 
C++
Java
python
Shell
c#

shell中的case语句

当语句的分支较多的时候,可以使用case语句

case in语句的基本格式
case expressio in       ###expression表示表达式,expression既可以是一个变量,一个数字,一个字符串还可以是一个数字计算表达式,或者是命令的执行结果,只要能够得到expression的值就可以
	pattern 1)			###pattern表示匹配模式,pattern可以是一个数字,一个字符串也可以是一个简单的正则表达式
		statement1
		;;
	pattern2)
		statement2
		;;
	………………
	*)
esac

在这里插入图片描述

echo和case结合的使用方法

echo 【选项】 【参数】 选项

-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
•\a 发出警告声;
•\b 删除前一个字符;
•\c 最后不加上换行符号;
•\f 换行但光标仍旧停留在原来的位置;
•\n 换行且光标移至行首;
•\r 光标移至行首,但不换行;
•\t 插入tab;
•\v 与\f相同;
•\ 插入\字符;
•\nnn 插入nnn(八进制)所代表的ASCII字符;
参数
变量:指定要打印的变量。

可以看到下图中的1和2,1是带有-e的参数,2是不带-e的参数,如果不带-e,则不会将后面的转义字符转义出结果。
在这里插入图片描述
在这里插入图片描述

shell的select语句

select语句结构

select   variable in value_list    ###其中variable表示变量,value_list表示取值列表,in是shell中的关键字
do
	statements         
done

使用CTRL+D结束select in语句的循环
#?提示用户输入菜单编号的选择

select练习

selece in通常会和case in使用:

#!/bin/bash
echo "What is your favourite OS?"
select name in "linux" "Windows" "deban" "Mac Os" "UNINX" "Android"
do
	echo $name
done

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值