Linux shell脚本基础
一、
1.如何从键盘获取一个变量的值?
方式1: echo 语句进行打印体术语句
eg:
echo "请输入一个数:"
read name
echo "输入的这个数是$name"
方式2:read -p "提示性语句" 变量名
eg:read -p "请输入一个数:" num1
echo "输入的这个数是$num1"
2.通配符的转义
软转义:带双引号即是软转义,只允许出现特定的shell元字符,以及关闭掉通配符的含义
硬转义:带单引号就是硬转义,即会去掉 shell元字符的含义或者通配符的含义
转义字符:(以\开头)会去掉shell元字符的含义或者通配符的含义
3.算术运算命令
expr的命令:可以实现算数运算的功能------>>加、减、乘、除、取余
eg:#实现两个数相加
read -p "请输入要计算的两个数字:" num1 num2
add=`expr $num1 + $num2`
echo "$num1 + $num2 = $add"
# exho "$num1 + $num2 = `expr $num1 + $num2`"
4.测试命令使用形式
(1)test :可以测试的对象有三个:字符串、整数、文件属性
测试命令使用形式:
形式1:test 对象1 对象2
形式2:[ 对象1 对象2 ]
(2)测试字符串
str1 = str2------>>测试两个字符串是否相等
str1 != str2------>>测试两个字符串是否不相等
-z str1 ------>>测试str1这个字符串的长度是否为0
-n str2 ------>>测试str2这个字符串的长度是否不为0
(3)测试整数
num1 -eq num2 ------>>测试两个整数是否相等
num1 -ne num2------>>测试两个整数是否不相等
num1 -gt num2------>>测试num1是否大于 num2
num1 -gt num2------>>测试num1 是否大于等于num2
num1 -lt num2------>>测试num1是否小于 num2
num1 -lenum2------>>测试num1是否小于等于 num2
(4)测试文件属性
-f file1 ---->测试file1是否存在并且为普通文件
-d file1 ---->测试file1是否存在并且为目录文件
-L file1 --->测试file1是否存在并且为链接文件
-r file1 --->测试file1是否存在并且具有可读权限
-w file1 --->测试file1是否存在并且具有可写权限
-x file1 --->测试file1是否存在并且具有可执行权限
-s file2 ----》测试file2是否存在且长度是否为0
file1 -nt file2 --->测试file1是否比file2更新(按照创建时间或者最新一次修改的时间)
file1 -ot file2 ---->测试file1是否比file2更旧(按照创建时间或者最新一次修改的时间)
二、结构性语句(分支语句&&循环语句)
1.if 分支语句
单分支语句 双分支语句 多分支语句
格式:if 语句块1 if 语句块1 if 语句块1
then then then
命令表 命令表1 命令表1
fi else elif 语句块2
命令表2 then
fi 命令表2
........
else
命令表N
fi
3.switch_case的脚本格式
格式:
case 常量 in
模式1)
命令表1
;;
模式2)
命令表2
;;
*)
命令表N
esac
4.逻辑运算符在脚本中的写法:
-a 代表与
-o 代表或
! 代表非
5.两个案例
案例1:
从键盘获得一个字符串,测试该字符串,如果是普通文件,则显示文件内容,如果是目录文件,则显示详细信息
利用if的多路分支
案例2:
从键盘获得一个成绩,对成绩做一个等级划分
结合case语句来实现
案例1代码:
#!/bin/bash
echo "请输入一个需要检测的字符串"
read string
if [ -f $string]
then
cat -n $string
elif [ -d $string]
then
ls -la $string
else
echo "写错了"
fi
------------------------------------------
案例2代码:
#!/bin/bash
read -p "请输入一个成绩:" cj
#判断成绩是否合法
if [ $cj -lt 0 -o $cj -gt 100 ]
then
echo "成绩违法"
exit
else
op=`expr ${cj} / 10`
case ${op} in
1 | 2 | 3 | 4 | 5)
echo "成绩不及格"
;;
6)
echo "成绩及格"
;;
7 | 8)
echo "成绩一般"
;;
9 | 10)
echo "成绩很优秀"
;;
esac
fi