shell编程学习笔记--基础

一、变量

  1. 编辑变量

在这里插入图片描述
变量名 = 变量值

  1. 引用变量

$ {变量名}
{}可以省略,但某些情况不行

echo $ 变量名

在这里插入图片描述

  1. 撤销变量

unset <varname>

当某个函数使用后,可以撤销某个函数

unset -f <函数名>

  1. 本地变量

在当前bash中创建的变量,就是本地变量

本地变量的作用域:本地变量只在当前bash进程中有效,对当前shell之 外的其它shell进程,包括当前shell的子shell进程均无效。

局部变量
局部变量的作用域:局部变量只对当前函数或代码段有效。
local <varname> = <value>

  1. 环境变量

环境变量的作用域:环境变量的生效范围为当前sheli进程及其子进程
export <varname> = <value>

source ./执行脚本
使脚本在当前进程中执行,所以可以调用本地变量

  1. 只读变量

readonly <varname> = <value>
作用域:只在当前bash

  1. 特殊变量

${n} 去传入脚本的第n个参数

  1. 声明变量

declare <varname> = <value>
-i 为整型
-x 环境变量
-r只读变量

二、算数运算

  1. let

只能整数运算,不包含小数运算
let a = 1/2

  1. expr
    expr a = 1 \* 2
    注意
    1、数值与运算符号之间需要用空格隔开,否则无法进行算术运算。
    2、使用expr命令进行乘法运算时,需要将"乘号"转义,否则会报错。

  2. bc
    在这里插入图片描述

scale 指定小数精度

三、逻辑运算,布尔运算,短路与,短路或

  1. -a 和 &&

cmd1 && cmd2

  • cmd1执行成功,则执行cmd2,cmd2成功,结果为真,否则为假
  • cmd1执行失败,结果为假
  1. -o 和 ||

cmd1 -o cmd2

  • cmd1执行失败,继续执行cmd2,cmd2成功,结果为真,否则为假
  • cmd1执行成功,则cmd2不会执行,结果为真

cmd1 && cmd2 || cmd3
在这里插入图片描述

四、组合命令的方法

统计两个目录的文件数量

(ls /dir1: ls /dir2)| wc -l
({}s /dir1: ls /dir2}| wc -l

当使用(cmd),是在子shell执行
{cmd},是在当前shell执行,命令需要空格隔开

五、-gt、-lt

$a -gt $b
判断a是否大于b,返回0,结果为真;返回1结果为假

$a -lt $b
判断a是否小于b,返回0,结果为真;返回1结果为假

六、[ ] [[ ]]

  1. 判断变量是否为空
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
简化判断
  • - z选项"可以判断指定的字符串是否为空,为空则返回真,非控则返回假,-z可以理解为zero
  • '-n选项"可以判断指定的字符串是否为空, 非控则返回真,为空则返回假, . n可以理解为nozero

变量处理、字符串操作

  1. 获取变量长度

echo ${#<varname>}

  1. 截取变量

截取的方向是从左到右

从指定位置开始截取变量

echo ${<varname>: 4} 从第四个字符截取到末尾

echo ${<varname>: -4} 从倒数第四个字符截取到末尾

从指定位置开始截取变量,指定截取一定长度

echo ${<varname>: 4 : 4} 从第四个字符截取四个字符

echo ${<varname>: -4 : 4} 从倒数第四个字符截取四个字符

掐头去尾截取

  • 掐头截取
    echo ${<varname># * A} 从左到右,删除第一个遇到的A,及其左侧的字符,保留右侧的字符
    echo ${<varname># #* A} 从左到右,删除最后一个遇到的A,及其左侧的字符,保留右侧的字符

  • 去尾截取
    echo ${<varname>% * A} 从左到右,删除第一个遇到的A,及其右侧的字符,保留左侧的字符
    echo ${<varname>%% * A} 从左到右,删除最后一个遇到的A,及其右侧的字符,保留左侧的字符

  1. 字符串大小写转换

echo ${<varname> ^^} 将变量中的小写字母转换为大写字母

echo ${<varname> ,} 将变量中的大写字母转换为小写字母

  1. 空或非空使对变量操作

在这里插入图片描述

${<varname> := ‘value’} 作用与上图相同,会赋值
${<varname> :- ‘value’} 值为空,打印value,不会赋值
${<varname> :+ ‘value’} 值为不空,打印value,值为空,返回变量本身既空值
${<varname> :? ‘error’} 值为空,返回错误信息

  1. 删除字符串

删除变量中第一个遇到的指定字符串

echo ${<varname> / str}

删除变量中所有的指定字符串

echo ${<varname> // str}

删除变量中位于行首的指定字符串

echo ${<varname> /# str}

删除变量中位于行尾的指定字符串

echo ${<varname> /% str}

  1. 替换字符串

替换第一个遇到的str1替换成str2

echo ${var / str1 / str2 }

将变量值中所有的str1替换成str2

echo ${var // str1 / str2}

将变量值中位于行尾的str1替换成str2

echo ${var/%str1/str2}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值