shell函数
函数的调用
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