一.SHELL脚本中的变量
1.1.什么是变量
在编写程序时,通常会遇到被操作对象不固定的情况
我们需要用一串固定的字符来表示不固定的值这就是变量存在的根本意义
变量的实现原理就是内存存储单元的一个符号名称
1.2.变量的命名规则
变量的名称中只能包含数字、大小写字母以及下划线
变量的名称只能用大小写字母及下划线开头
同一名称变量在多次被赋值时为覆盖动作
在企业代码规范化中变量的命名规则如下:

1.3.变量的调用方法


1.4.字符的转义及引用
在
shell
中有很多本身有特殊功能的字符,比如空格井号等等
如果在给变量赋值或执行命令使用时我们只想使用这些符号本身那么就需要用到转义或引用
在
shell
中反斜杠表示转义,每个反斜杠只能转义一个字符
在
shell
中单引号表示强引用,我们可以把它看作批量转义,在单引号内的所有字符被视为字符本身
在
shell
中双引号表示弱引用,其和单引号的区别在于不能引用(
` \ ! $
)

1.5.变量的类型
从变量的作用范围来划分,变量分为函数级变量,环境级变量,用户级变量和系统级变量
函数级变量只在函数内生效通常用
local来定义。


环境级别变量只在当前运行的
shell
中生效,
shell
关闭变量被释放


用户级变量只有登录系统的指定用户,此变量才生效


系统级变量是系统中的永久设定,所有用户都可以使用,系统变量通常被保存到
/etc/profile
中




1.6.常见的系统及变量
在系统中被预设的变量如下
变量
|
说明
|
PATH
| 命令的搜索路径,以冒号作为分隔符 |
HOME
|
用户的家目录的路径,是
cd
命令的默认参数
|
COLUMNS
|
命令行编辑模式下可使用命令的长度
|
HISTFILE
|
命令历史的文件路径
|
HISTFILESIZE
|
命令历史中包含的最大行数
|
HISTSIZE
|
history
命令输出的记录数
|
LOGNAME|USER
|
当前用户的名字
|
SHELL
|
当前使用的
shell
|
PWD
|
当前的工作目录
|
PS1
|
命令行提示符变量
|

Note
PATH
指定命令执行路径是非常有用
如果我想在当前用户中可以用相对路径方式调用
/mnt
下的所有可执行文件
1.7.特殊变量定义方式
1.7.1.
用命令的执行结果定义变量
在执行命令时如果想让指定命令优先执行可以使用
$(cmd)
或
``

1.7.2.
传参变量
很多情况下,
shell
脚本需要接受用户的输入,根据用户的输入来执行不同的操作。
从命令行传递给
shell
脚本的参数又称为叫做位置参数,
shell
脚本会根据参数的位置使用不同的位数
变量读取他们的值




1.7.3
交互式传参
利用
read
命令可以和脚本执行者进行交互传参
示例:
交互赋值单个变量

交互赋值多个变量

交互赋值数组

交互赋值并显示提示符

隐藏赋值内容

设置超时时间

设置赋值长度

指定录入结束符


1.7.4
数组变量
我们可以定义变量为一组内容,中间的元素用空格隔开

取变量的所有元素


取数组的第一个元素

取数组的最后一个元素

取数组的第
1-3
个元素

查看数组的元素个数

管理数组元素
将第一个元素改为6

删除第二个元素:

删除这个数组;

1.7.5.
变量中字符串的取值管理

示例:
设定实验变量

取所有字符串

统计字符串长度

从指定位置取值到结尾

从指定位置取指定长度的字符

从倒数第
3
个字符向后取
2
个字符

取最后
5
个字符

从开头检索最近匹配字符串并删除


从开头检索最远匹配字符串并删除
从头删除:

从尾删除:

替换字符

1.7.6.
脚本中的函数
变量是一个变化值的别名
函数就是一段程序的别名
做一个1:20秒的倒计时


1.8.取消变量
unset
变量 即可把变量取消
Note
如果变量被记录到配置文件中需要在配置文件中删除记录
二.shell中的运算
2.1.shell中的运算命令


2.2.shell中的数学运算符号
shell
中常用的运算符号如下:



2.3.位运算
2.3.1.
什么是位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的
位运算就是直接对整数在内存中的二进制位进行操作
2.3.2
位逻辑运算





