Shell脚本(一)

一.shell

shell是指一种应用程序,提供一个界面,用户通过这个界面访问操作系统内核的服务

1.shell脚本编写

 #!/bin/bash 约定标记,告诉系统这个脚本需要什么解释器来执行

2.运行Shell脚本两种方法

(1)作为可执行程序

chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本

(2)作为解释器参数

/bin/sh test.sh

二.shell变量

1.定义变量

my_name="ahka"

注:变量名和等号之间不能有空格

2.使用变量: 在变量名前面加美元符号

  echo $my_name
  echo ${my_name}

3.只读变量:变量不能被改变

 readonly my_name

4.删除变量

  unset   my_name

5.变量类型

     (1)局部变量:在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问
      (2)环境变量:所有的程序都可以访问环境变量
      (3)shell变量:由shell程序设置的特殊变量

三Shell字符串

1.单引号:字符原样输出,变量无效

2.双引号:可以有变量

3.字符串拼接:

在这里插入图片描述

4.获取字符串的长度

echo ${#string} 

5.提取字符串

${string:1:4}

6.查找字符串

注:哪个字母先出现就计算哪个

string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4

四.Shell 数组

1.定义数组

数组名=(值1 值2 … 值n)

2.读取数组

${数组名[下标]}

3.获取数组的长度

在这里插入图片描述
在这里插入图片描述

五.传递参数

1.脚本内获取参数的格式为

$n :n 代表一个数字
$1 为执行脚本的第一个参数
$0 为执行的文件名
n大于10要用花括号括起来
在这里插入图片描述
在这里插入图片描述
执行后:
在这里插入图片描述

六.shell基本运算符

注:expr 是一款表达式计算工具,使用它能完成表达式的求值操作

1.算数运算符

加+,减-,乘*,除/,求余%,赋值=,相等==,不相等!=
在这里插入图片描述
在这里插入图片描述
注意:注意括号内部的空格和运算符与变量之间的空格

2.关系运算符

注:只支持数字,不支持字符串,除非字符串的值是数字
1.eq:是否相等,相等则返回true
2.-ne:是否不相等,不相等则返回true
3.-gt:左边是否大于右边的数,大于则返回true
4.-lt:左边的数是否小于右边的数,小于则返回true
5.-ge:左边的数是否大于等于右边的数,是则返回true
6.-le:左边的数是否小于等于右边的数,是则返回true

#!/bin/bash
a=10
b=20
# -eq 是否相等
if [ $a -eq $b ]
then
  echo "a等于b"
else
  echo "a不等于b"
fi

# -ne 是否不相等
if [ $a -ne $b ]
then
  echo "a不等于b"
else
  echo "a等于b"
fi

# -gt 是否大于
if [ $a -gt $b ]
then
  echo "a大于b"
else
  echo "a不大于b"
fi
# -lt 是否小于
if [ $a -lt $b ]
then
  echo "a小于b"
else
  echo "a不小于b"
fi

# -ge 是否大于等于
if [ $a -ge $b ]
then
  echo "a大于或等于b"
else
  echo "a小于b"
fi

# -le 是否小于等于
if [ $a -le $b ]
then
  echo "a小于或等于b"
else
  echo "a大于b"
fi

结果:

[root@cent30 function]# sh guanxi.sh
a不等于b
a不等于b
a不大于b
a小于b
a小于b
a小于或等于b

3.布尔运算符

1.!:非运算 ,表达式为true则返回false,否则返回true
2.-o:或运算
3.-a:与运算

#!/bin/bash
a=10
b=20

# !不等于
if [ $a != $b ]
  then
    echo "a不等于b"
  else
    echo "a等于b"
fi

# -a 与
if [ $a -lt 20 -a  $b -gt 15 ]
  then
    echo "a小于20且b大于15:返回true"
  else
    echo "a小于20且b大于15:返回false"
fi

# -o 或
if [ $a -lt 10 -o  $b -gt 15 ]
   then
    echo "a小于20或b大于15:返回true"
  else
    echo "a小于20或b大于15:返回false"
fi

结果:

[root@cent30 function]# sh boonlean.sh
a不等于b
a小于20且b大于15:返回true
a小于20或b大于15:返回true

4 .逻辑运算符

1.&&:逻辑的and
2.||:逻辑的or

#!/bin/bash

a=10
b=20

# && 逻辑与
if [[ $a -lt 100 && $b -gt 100 ]]
then
  echo "返回true"
else
  echo "返回false"
fi

# ||逻辑或
 if [[ $a -lt 100 || $b -gt 100 ]]
then
 echo "返回true"
else
 echo "返回false"
fi

结果:

[root@cent30 function]# sh luoji.sh
返回false
返回true

5.字符串运算符

1.=:检测两个字符串是否相等
2.!=:不相等返回true
3. -z:字符度长度为0,返回true
4. -n:字符串长度不为0,返回true
5. $:检测字符串是否为空,不为空返回true

#!/bin/bash
a="abc"
b="efg"

# =判断是否相等
if [ $a = $b ]
then
  echo "a等于b"
else
  echo "a不等于b"
fi

# != 不相等
if [ $a != $b ]
then
  echo "a不等于b"
else
  echo "a等于b"
fi


# -z 长度为0返回true
if [ -z $a ]
then
  echo "a的长度等于0"
else
  echo "a的长度不等于0"
fi

# -n 长度不为0返回true
if [ -n $a ]
then
  echo "a的长度不等于0"
else
  echo "a的长度等于0"
fi
# $ 字符串不为空返回true
if [ $a ]
then
  echo "a字符串不为空"
else
  echo "a字符串为空"
fi

结果:

[root@cent30 function]# sh zifuchuan.sh
a不等于b
a不等于b
a的长度不等于0
a的长度不等于0
a字符串不为空

6.文件测试运算符

1.-b file :检测文件是否是块设备文件,是,则返回true
2.-c file:检测文件是否是字符设备文件,是,则返回true
3.-d file:检测文件是否是目录,是,则返回true
4.-f file:检测文件是否是块普通文件,是,则返回true
5.-g file:检测文件是否是设置了SGID定位,是,则返回true
6.-k file:检测文件是否设置了粘着位,是,则返回true
7.-p file:检测文件是否是有名管道,是,则返回true
8.-r file:检测文件是否是可读,是,则返回true
9.-w file:检测文件是否是可写,是,则返回true
10.-x file:检测文件是否是执行,是,则返回true
11.-s file:检测文件是否是为空,不为空则返回true
12.-e file:检测文件是否存在,是,则返回true

#!/bin/bash
file="/root/function/guanxi.sh"

# -r 可读
if [ -r $file ]
then
 echo "文件可读"
else
 echo "文件不可读"
fi

# -w 可写
if [ -w $file ]
then
 echo "文件可写"
else
 echo "文件不可写"
fi

# -x 可执行
if [ -x $file ]
then
 echo "文件可执行"
else
 echo "文件不可执行"
fi

# -f 是否为普通文件
if [ -f $file ]
then
 echo "文件为普通文件"
else
 echo "文件不是普通文件"
fi

# -d 是否为目录
if [ -d $file ]
then
 echo "文件是个目录"
else
 echo "文件不是个目录"
fi
# -s 是否为空
if [ -s $file ]
then
 echo "文件不为空"
else
 echo "文件为空"
fi

# -e 是否存在
if [ -e $file ]
then
 echo "文件存在"
else
 echo "文件不存在"
fi

结果:

[root@cent30 function]# sh wenjian-test.sh
文件可读
文件可写
文件不可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值