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

函数的调用

1、参数的定义

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

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

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

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

if语句

if语句的格式

if 
then
	echo
else
	echo
fi

if test命令

数值的比较

1、test命令的使用说明在这里插入图片描述
需要注意的是,使用[]的时候,需要两侧添加括号

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会将 > 当作重定向符,将变量的值当作文件名输出 ==

在这里插入图片描述
= 和 != 比较的是字符串的内容是否相等 ;> 和 < 比较的是字符串的长短,-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、练习
在这里插入图片描述
在这里插入图片描述

#!/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中的条件不成立的时候才进入循环体
在这里插入图片描述
在这里插入图片描述
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语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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   ****
do
	echo
done

在这里插入图片描述
在这里插入图片描述
使用CTRL+D结束select in语句的循环
#?提到hi用户输入菜单编号的选择

在这里插入图片描述

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

在这里插入图片描述

发布了57 篇原创文章 · 获赞 0 · 访问量 1305

猜你喜欢

转载自blog.csdn.net/weixin_45674039/article/details/104647869
今日推荐