Linux 学习之路(五):bash脚本编写

本文详细介绍了Bash脚本编程中的变量类型,包括环境变量、本地变量和位置变量,以及如何进行条件判断和控制命令间的逻辑关系。此外,还讲解了Bash中的特殊变量、变量引用、输出重定向和算术运算。通过多个实践案例,展示了如何在脚本中添加、删除用户,以及进行用户权限判断,帮助读者深入掌握Bash脚本的使用。
摘要由CSDN通过智能技术生成

bash脚本编程

fgrep:不支持正则表达式

静态语言:编译型语言

​ 强类型(变量) 关键字

​ 事先转换成可执行格式

​ c\c++\JAVA\c#

动态语言:解释型语言

​ 弱类型

​ 边解释边执行

​ PHP\SHELL\python\perl

变量:内存空间、命名

内存:编址的存储单元

变量类型:事先确定数据的存储格式和长度

缓冲区溢出

bash变量类型:

​ 环境变量

​ 本地变量(局部变量)

​ 位置变量

​ 特殊变量

本地变量:

VARNAME=VALUE:作用域为整个bash进程

局部变量:

local VARNAME=VALUE:作用域为当前代码段

环境变量:作用域为当前shell进程及其子进程

export VARNAME=VALUE 或者

VARNAME=VALUE

export VARNAME

​ “导出”

脚本在执行时会启动一个子shell进程:

​ 命令行中启动的脚本会继承当前shell环境变量

​ 系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

​ bash

​ 不同的shell是两个不同的shell进程

引用变量:${VARNAME},括号可以省略

#加{}的情况
[root@localhost ~]# ANIMAL=pig
[root@localhost ~]# echo "There are some $ANIMALs"#引用成新变量
There are some 
[root@localhost ~]# echo "There are some ${ANIMAL}s"
There are some pigs

单引号是强引用,不做变量替换:

[root@localhost ~]# echo "There are some ${ANIMAL}s"
There are some pigs
[root@localhost ~]# echo 'There are some ${ANIMAL}s'
There are some ${ANIMAL}s

pstree 看当前是否在子shell中

位置变量:

$1,$2…

特殊变量:

$?:上一个命令的执行状态返回值

程序执行,可能有两类返回值:

程序执行结果

程序状态返回代码(0-255)

​ 0:正确执行

​ 1-255:错误执行:1,2,127系统预留,其他可以自定义

[root@localhost ~]# ls /var
account  cache  db     games   kerberos  local  log   nis  preserve  spool   tmp
adm      crash  empty  gopher  lib       lock   mail  opt  run       target  yp
[root@localhost ~]# echo $?
0
[root@localhost ~]# lss /var
bash: lss: 未找到命令...
相似命令是: 'ls'
[root@localhost ~]# echo $?
127

输出重定向:

/dev/null/:软件模拟设备,bit bucket,数据黑洞

#用于命令结果对我们没有意义
[root@localhost ~]# id student &> /dev/null
[root@localhost ~]# echo $?
1

撤销变量:

unset VARNAME

查看当前shell中变量:

set

查看当前shell中的环境变量:

printenv

env

export

#补上新变量
[root@localhost ~]# ANIMALS=pig
[root@localhost ~]# ANIMALS=$ANIMALS:goat
[root@localhost ~]# echo $ANIMALS
pig:goat
[root@localhost ~]# ANIMALS=$ANIMALS:sheep
[root@localhost ~]# echo $ANIMALS
pig:goat:sheep

变量不做算术运算:

[root@localhost ~]# A=2
[root@localhost ~]# B=3
[root@localhost ~]# C=$A+$B
[root@localhost ~]# echo $C
2+3

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

Linux内核只能识别ELF格式

shebang:魔数

#!/bin/bash(解释器路径)

[root@localhost ~]# ls -l first.sh
-rw-r--r--. 1 root root 35 10月 16 08:56 first.sh
[root@localhost ~]# chmod +x first.sh
[root@localhost ~]# echo $PATH
/root/.nvm/versions/node/v10.7.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/bin
[root@localhost ~]# pwd
/root
[root
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值