shell脚本文件以.sh文件为后缀
touch first.sh
vim first.sh
!#/bin/bash 脚本的声明 声明是哪个解释器来解释的
echo “hello word”; echo 代表输出
编辑好后 :wq退出
命令行执行 bash first.sh
概念
1.1变量格式
变量名称 = 变量值
变量名称不可以是数字、特殊字符开头;
“=”为变量赋值
变量的值可以是(数字、字符串、文件的位置、命令、命令的结果)
1.2变量的分类
自定义变量、环境变量、位置变量、预定义变量
1.3变量的输出
bianliang="woshibianlian" 等号两边不允许有空格
echo $bianliang;
echo 输出变量,定义的变量名前加$符号
2、自定义变量
可以在命令行中直接声明
3、系统环境变量
4.预定义变量
创建 vim test.sh
#!/bin/bash
SUM=$(expr $1 + $2)
echo "$1 + $2 = $SUM"
解释一下$1 $2什么意思:
比如一个命令 ls -al
ls 代表 $0 而 -al代表$1 一个空格代表一个分隔符
保存退出后执行 bash test.sh 1 2
2.运算符
expr:数值运算
expr:变量1 元素符 变量2
运算符: + - * / %
语法需要注意
这是错误写法
这是正确写法
原因是$A + $B 之间必须要有空格 如果没有空格则无法分割变量会将 $A+$B 视为一个整体来进行运算输出
过滤网卡eth0的ip地址 并重新赋值给新的环境变量
ifconfig eth0 | grep "inet" | awk '{print $2}'
IPADDR=$(ifconfig eth0 | grep "inet" | awk '{print $2}')
'' : 单引号不解析变量
"" : 双引号可以解析变量
类似于php中的单双区别
3.shell交互式赋值
read命令
read haha
进入输入模式 输入需要填入的值
效果和 haha=111
echo $haha 是一样的
4、编写一个请输入密码提示
read -p "Please enter your password:" password
echo $password
5、编写一个身份验证
#!/bin/bash
read -p "Please enter your UserName: " username
if [ $username == root ]
then
read -p "Please enter your Password: " password
if [ $password == 123456 ]
then
echo "Login Success"
else
echo "Your PassWord ERROR"
fi
else
echo "Your UserName ERROR"
fi
#!/bin/bash 声明用哪个解释器
then:如果条件成立则走下面的逻辑
else:如果条件不成立则走这下面的逻辑
fi:代表一个if的结束
[ ] : 测试符号也可以用 test代替
例:
[ 1==1 ] && echo " ok ! "
会判断1是否等于1
如果1=1了 那么则输出 ok!
5.1逻辑运算符
&&:并且的意思 出现 && 表示 &&前的语句 和 && 后的语句必须都成立 才可以继续执行
|| :或的关系 出现||标识 ||前的语句 和 || 后的语句 有任意一个满足条件便向下执行
!:逻辑取反
-eq :等于
-ne:不等于
-gt:大于
-lt:小于
-le:小于等于
-ge:大于等于
格式 [ 需要比较的数值1 操作符 需要比较的数值2 ]
例:[ 1 -eq 1 ] && echo "ok!"
判断字符串是否为空:
-z : 是否为空
例:[ $a -z ] && echo "ok"
if多分支判断
if [ 条件 ]
then
ehco '第一个if'
elif [ 条件 ]
then
else
fi
5.2 for循环
语法格式
for 变量名 in 取值列表
do
echo "循环"
done
5.3 while语句
while [ 条件 ]
do
符合条件执行
done
5.4 case 语句
case $i in
对比值1)
符合对比值1时候需要执行的命令
;;
对比值2)
符合对比值2时候需要执行的命令
;;
esac
5.5 函数
方法名称()
{
方法内需要执行的命令
}
调用
方法名称()
例:
vim test.sh
helle(){
echo "hello word"
}
载入函数
source test.sh
在命令行输入刚才输入的
函数名字