脚本编程Bash Shell

1、什么是Shell

shell是一个命令解释器,用户在shell脚本里写命令,Shell操作内核,内核驱动硬件,来操作Linux。

2、编写第一个shell脚本

新建一个脚本:test.sh,内容如下

#!/bin/bash
echo "hello B shell!!"

执行脚本命令:

chmod +x test.sh
./test.sh

执行完脚本会输出:hello B shell!!

1、每一个shell要有头的定义,正常是#!/bin/bash
2、打印:echo“要打印的东西”
3、定义好的脚本要加上执行权限:chmod +x 脚本路径
4、三种打印方式:
(1)路径调用:如果在当前目录,则使用./test.sh,绝对路径也可以
(2)普通脚本执行:sh 脚本路径
(3)指定b shell执行:/bin/bash 脚本路径

3、shell的变量

1、Shell的变量介绍
1)Linux Shell中的变量分为:系统变量和用户自定义变量
2)系统变量:$HOME、$PWD、$USER等等
比如:echo $HOME等
3)显示当前shell中所有变量:set
2、Shell变量的定义
1)定义变量
①直接赋值法:变量=值

A=100
B=“abc”
ARR=(1 2 3 4) 

②引用赋值法

 B=$A
 C=${b}

③引用命令执行结果的赋值

A=`ls-l`
B=$(ls-l)

2)撤销变量:unset 变量
unset A
3)声明静态变量:readonly变量,注意:不能unset

readonly A=99
echo "A=$A"

3、定义变量的规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2)等号两侧不能有空格
3)变量名称一般习惯为大写
4、将命令的返回值赋给变量
1)A=`ls-la`反引号,运行里面的命令,并把结果返回给变量A

RESULT=`ls -l /home`
echo $RESULT

2)A=$(ls-la)等价于反引号

MY_DATE=$(date)
echo "date=$MY_DATE"

4、shell传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
新建脚本test.sh,内容如下:

#!/bin/bash
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

为脚本加权限并执行脚本,如下:

chmod +x test.sh
./test.sh "abc" 123 "ABC"

执行结果如下:
执行文件名:./test.sh
第一个参数为:abc
第二个参数为:123
第三个参数为:ABC

另外,还有几个特殊字符用来处理参数:
在这里插入图片描述

5、执行变量的运算

1、基本语法
1)"$((运算式))”或"${运算式}"或$[运算式]
2)expr m + n
注意expr运算符之间要有空格
3)expr m-n
4)expr *,/,% 乘、除、取余
注意:在判断条件中使用计算:在中括号内侧及运算符两边都要加空格。

2、数值关系运算符
在这里插入图片描述
3、逻辑运算符
在这里插入图片描述
4、字符串运算符
在这里插入图片描述
5、文件运算符
在这里插入图片描述

6、流程控制

1、if判断

语法:
①if then fi
②if then elif then fi
③if then elif then else fi
非常重要!!!
1、if条件语句可省略成:[[ 条件语句 ]] && 结果语句(注意条件语句两端有空格)
2、在判断条件中使用计算:在中括号内侧及运算符两边都要加空格;
3、数值型:大于:-gt,小于:-lt,等于:-eq或==,不等于:-ne;
字符串型:等于:=或==,不等于:!=,是否为空:-z 字符串

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

输出结果:a小于b

if else语句经常与test命令结合使用

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

输出结果:两个数字相等

2、case

选择语句,类似于java里switch语句,星号相当于default,两个分号;;相当于break
语法:
case 值 in
值1)命令
;;
值2)命令
;;
值3)命令
;;
esac

#!/bin/bash
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

3、while循环

语法:
while 条件
do
command
done

可利用break和continue

例如:循环输出1-5

#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

4、for循环

语法1:
for 变量 in 值1 值2 值3…
do
命令
done

语法2:
for((assignment;condition:next))
do
命令
done

例如:循环输出1-5

#!/bin/bash
for i in 1 2 3 4 5
do
   echo $i
done   
#!/bin/bash
for((i=1;i<=5;i++))
do
    echo $i
done

5、until循环

until 循环执行一系列命令直至条件为 true 时停止
语法:
until 条件
do
命令
done

输出0~9的数字

#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

a=`expr $a + 1`可以使用let “a++”

7、TMOUT

在用户输入空闲一段时间后自动断开
例如:3秒内输入姓名,超时自动断开

#!/bin/bash
TMOUT=3
echo "please input your name,you have $TMOUT to type in"
read abc
if [ $? -eq 0 ]
then
echo "your name is $abc"
else
echo "time out,game over"
fi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值