1.shell介绍
通常所说的shell就是shell脚本,它是一门脚本语言,弱类型
2.shell规范
第一行内容为#!/bin/bash
#注释
是以.sh结尾的文件
3.shell语法
变量
定义
释放变量
变量值如果有空格,需要加引号
"" :输出变量对应的值
'':原样输出
``:定义命令变量时需要使用``
命名规范
输出变量:echo $变量名
输入:read 变量名
read -p "提示信息" 变量名
样例 :
#!/bin/bash
#输入目录
read -p "请输入目录:" dir
#进入etc目录下
cd $dir
filenum=`ls -l|wc -l` //查看当前路径下有多少个文件
echo "该目录下有$filenum个文件"
向文件传递参数:
$1--->传递第一个参数
$2---->....
$3--->....
$n---->......
$0:显示的是文件名称
$@:显示所有的参数
$#:显示的参数的个数
#!/bin/bash
echo "这个数据是$1"
echo "这个数据是$2"
echo "这是$0"
echo "这是$@"
echo "这是$#"
重定向:将内容保存到文件中
正确命令: 用数字1表示, >覆盖,>>追加
错误命令:用数字2表示,>覆盖,>>追加
程序的结构
分支结构:
if...else分支:
逻辑运算符:-a -o !
比较运算符:-ge -gt -lt -le -eq -ne
测试文件的状态:test 参数 文件名
字符串判断:== ,!=
文件判断:-d -e -f -w -r -x .....
if...elif...else分支
#!/bin/bash
read -p "请输入目录:" dir
d=`ls $dir`
if [ "$d" == "" ];then
echo "目录为空"
else
echo "目录不为空"
fi
#!/bin/bash
#提示用户输入用户明和密码
read -p "请输入你的用户名和密码:" username passwd
#进行判断
if [ "$username" == "admin" -a "$passwd" == "123456" ]
then
echo "登录成功"
else
echo "登录失败"
fi
#!/bin/bash
#输入数字
read -p "please input a num:" num
#判断
if [ "$num" -gt 0 ]
then
((num--))
echo $num
else
((num++))
echo $num
fi
#!/bin/bash
#提示用户输入
read -p "请输入一个目录:" dir
#进行判断 ,判读目录是否存在
if test -d $dir
then
#统计文件的个数
filenum=`ls -l $dir|wc -l`
echo "目录$dir下的文件个数为$filenum"
else
echo "目录不存在"
fi
#!/bin/bash
#提示用户输入分数
read -p "请输入你的分数:" score
#进行判断
if [ "$score" -ge 90 -a "$score" -le 100 ]
then
echo "优秀"
elif [ "$score" -ge 80 -a "$score" -lt 90 ]
then
echo "良好"
elif [ "$score" -ge 70 -a "$score" -lt 80 ]
then
echo "一斑"
elif [ "$score" -ge 60 -a "$score" -lt 70 ]
then
echo "及格"
else
echo "西西睡把"
fi
#!/bin/bash
#提示用户输入
read -p "请输入内容:" con
if [ -z "$con" ]
then
echo "为空"
elif [ -d "$con" ]
then
echo "是目录"
elif [ -f "$con" ]
then
echo "是文件"
else
echo "错误"
fi
case分支:
注意:
1.case这一行的最后为in
2.;;表示语句的结束
3. *:表示默认
4.esac:表示case语句结束
5.值:可以是字符串、数字、还可是区间范围【0-9】之间
#!/bin/bash
#提示
read -p "请输入产品:" pro
case $pro in
"A")
echo "笔几本";;
"B")
echo "电凡报";;
"C")
echo "小台灯";;
esac
#!/bin/bash
#提示
read -p "请做出平价:" pj
case $pj in
[0-3])
echo "不满意";;
[4-6])
echo "满意";;
[7-9])
echo "非常满意";;
esac
循环结构
for循环
格式:for 变量名 in 列表
do
语句
done
命令:seq start size max
#!/bin/bash
#循环
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
#!/bin/bash
#循环
for i in `seq 1 10`
do
echo $i
done
变量:变量名=变量值--->没有空格
变量名不能以数字开头,字母数字、下划线组成
特殊变量:含有空格:需要引号:双引号、单引号、反单引号
输出变量:echo $变量名
输入:read 变量名--->变量名可以有多个,如果给变量赋值时,超过变量的个数,这个时候把多余的变量值赋值最后一个变量
read -p "提示信息" 变量名
参数的传递:
.sh文件如何接收参数:
$1/$2....
$0:显示的文件名称
$@:显示所有的参数
$#:显示的是参数的个数
重定向:可以把命令输出到文件中
正确命令:用1表示,用法:命令 1>文件名 命令 1>>文件名
错误命令:用2表示,用法:命令 2>文件名 命令 2>>文件名
程序结构
分支
if..else分支
if...elif...else分支
case分支
逻辑运算符:-a -o !
数字比较运算符: -eq/-ne/-gt/-ge/-lt/-le
字符串比较:== !=
文件状态测试:test 参数 变量名
文件判断:-参数 变量名
循环:
for循环