(一)Shll基础

1、Shell简介

shell是一个命令解释器。我们输入的命令计算机是不能直接识别的,它把用户输入的命令解释给操作系统并处理操作系统的输出结果输出到屏幕返回给用户。它在linux操作系统的最外层,负责直接与用户进行对话,我们也称之为用户和操作系统之间的桥梁。
在这里插入图片描述

2、Shell变量设置规范及分类

2.1设置规范
(1)变量名称通常是大写字母,它可以由数字、字母(大小写)和下划线_组成,不能使用-。变量名区分大小写;但是不能以数字开头,中间不能有空格,也不能使用标点符号等。
(2)等号 = 用于为变量赋值,在使用过程中等号两边不能有空格
(3)在对变量赋于字符串值时,建议大家用引号将其括起来。因为如果字符串中存在空格隔符号,需要使用单引号或双引号。
(4) 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号。如:“$变量名”或 ${变量名}
2.2分类
按照变量的作用可以分为4种,分别是用户自定义变量环境变量位置参数变量预定义变量
用户自定义变量:
用户自定义变量又称为局部变量,多使用在 Shell 脚本内部或者临时局部使用。
在这里插入图片描述
环境变量:
环境变量则主要是在程序运行时需要设置。 主要保存的是和系统操作环境相关的数据,它只在当前shell有效,当shell关闭时变量则会消失。
位置参数变量:
这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
在这里插入图片描述
在这里插入图片描述
**预定义变量:**是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
按照作用域可以分成2类:
全局变量:对于shell会话和所有的子shell都是有效的。
局部变量: 它只在自己的进程当中使用。

3、Shell的特殊变量

有些变量是一开始执行Script脚本时就会设定,且不能被修改,但我们不叫它只读的系统变量,而叫它特殊变量。这些变量当一执行程序时就有了,以下是一些特殊变量:

字符描述
$*当前脚本所有参数;如有双引号:"$*" 把所有参数以一个整体方式输出
$0当前脚本的名称及路径
$#当前脚本的参数个数
$?命令执行后的状态,返回0表示成功
$_上一个脚本最后一个参数
$@当前脚本所有参数
$$脚本的PID
$!上一个脚本的PID

4、Shell变量子串

  • ${#VAR} 取字符串长度

     [ root@Centos7 ~]# linuxa="i am a good boy"
     [ root@Centos7 ~]# echo ${#linuxa}
     15
     [root@Centos7 ~]# echo "$linuxa"|wc -c
     16
     [root@Centos7 ~]# echo "$linuxa"|wc -L
     15
     [root@Centos7 ~]# echo "$linuxa"|awk '{print length}'
     15
     [root@Centos7 ~]# expr length "$linuxa"
     15
     //取出长度小于3的字符
     [root@Centos7 ~]# echo ${linuxa}|xargs -n1|awk '{if(length<3)print}'
     i
     am
     a
    
  • ${VAR#*.}从头删除最短匹配字符

      [root@Centos7 ~]# URL=www.baidus.com.cn.org
      [root@Centos7 ~]# echo ${URL#*.}
      baidus.com.cn.org
    
  • ${VAR##*.}从头删除最长匹配字符

      [root@Centos7 ~]# echo ${URL##*.}
      org
    
  • ${VAR%.*}从尾删除最短匹配字符

      [root@Centos7 ~]# echo ${URL%.*}
      www.baidus.com.cn
    
  • ${VAR%%.*}从尾删除最长匹配字符

      [root@Centos7 ~]# echo ${URL%%.*}
      www
    
  • ${VAR:} 切片;切掉第一个字符

      [root@Centos7 ~]# echo ${linuxa:1}
      am a good boy
      [root@Centos7 ~]# 
    
  • 从第2个字符开始切取4个字符

      [root@Centos7 ~]# echo ${linuxa:2:4}
      am a
      [root@Centos7 ~]# 
    
  • ${VAR/A/B}变量字符替换;A替换为B

      [root@Centos7 ~]# echo ${URL/www/ggg}
      ggg.baidus.com.cn.org
    
  • ${VAR//B/D}不连续的变量字符替换;所有B替换为D

      [root@Centos7 ~]# echo ${URL//c/mmm}
      www.baidus.mmmom.mmmn.org
    

5、数值运算

bc命令(支持小数运算)

[root@Centos7 ~]# echo 1+2|bc
3
[root@Centos7 ~]# echo 5*2|bc
10
[root@Centos7 ~]# echo 5-2|bc
3
[root@Centos7 ~]# echo 5/2|bc
2
[root@Centos7 ~]# echo 5*2.8|bc
14.0

expr 命令
注:运算符两边必须有空格

[root@Centos7 ~]# expr 2 / 2
1
[root@Centos7 ~]# expr 2 % 2
0
[root@Centos7 ~]# expr 2 + 2
4
[root@Centos7 ~]# expr 2+2
2+2

echo $(())//也可以用[]代替(())

[root@Centos7 ~]# echo $((2*2))
4
[root@Centos7 ~]# echo $((2+2))
4
[root@Centos7 ~]# echo $((2**2))
4
[root@Centos7 ~]# echo $((2%2))
0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值