Linux Bash Shell有关变量

bash 创建一个子bash
-n 查看是否有错误
-x 逐行显示信息
$:显示当前PID
PPID :显示父进程PID
SHLVL :显示当前shell是几级shell
pstree 显示进程树
-p 同时显示进程号
ps -ef 显示进程信息

本地变量 :仅对当前SHELL有效,对子SHELL也无效
环境变量:对当前SHELL及子SHELL均有效。

set 显示本地变量和环境变量
env 显示环境变量

变量赋值
变量名=变量值(可以是$(命令) 、$[$变量+n])
export 变量名 定义环境变量
export 变量名=变量值 定义环境变量
declare -x 变量名=变量值 定义环境变量

本地变量查询 set 同时查本地和环境
环境变量查询
env
printenv
export
declare -x
均为查询环境变量,管道,接grep 变量名查询单个变量

删除变量
unset 变量名

变量只读
readonly 变量名
declare -r 变量名

查询所有只读变量
readonly -p

位置变量:在脚本中通过调用命令行传递给脚本的参数
$1,$2,$3, 等等 分别对应第一个第二个第三个参数 参数以空格为间隔
$* 代表传入脚本的所有参数。
$0 代表命令本身。
$@传递给脚本的参数,每个参数为独立字符串
$# 传递给脚本的参数的个数
set — 清空所有位置变量

变量引用
$变量名
“$变量名”
$(变量名)
当变量值当中包含换行符,如果希望引用出的值同样包含换行符,只能使用”$变量名”

+, -, *, /, %取模(取余), **(乘方)在bc当中乘方是^
实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式))
(4) var=$(expr arg1 arg2 arg3 …) 乘法时要转译* ,即\*
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc

算数运算 help let

+, -, *, /, %取模(取余), **(乘方)在bc当中乘方是^
实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式))
(4) var=$(expr arg1 arg2 arg3 …) 乘法时要转译* ,即\* 且没有乘方。
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc

read 指定脚本变量
read -p 提示语句
read -s 静默输入

数组:储存多个元素的连续的内存空间,相当于多个变量的集合。
数组索引 : 编号从0开始,属于数值索引
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持
bash的数组支持索引号不连续,如阵列 00 01 02 10 11 12 20 21 22等等
数组声明
declare -a 数组名 (可以不定义直接使用)
关联数组 declare -A 数组名
数组查询 declare -a 可以查询系统中定义了那些数组
-A 可以查询系统中定义了那些关联数组

赋值
单个单元赋值 数组名【编号】=变量
如: int[0]=4 ; i=0; int[$i]=4 ; int[0]=$(命令)
一次赋值全部元素
如: int=({1..100})
int=(“a1” “a2” “a3″ …)
赋值特定元素
如:int=([0]=”a1″ [3]=”a2”)
交互式数组赋值
read -a 数组名
追加元素定义
数组名【${#数组名[*]}】=变量值

引用 ${数组名[下标号]} :引用单个元素 不写下标为数组第一个元素
${数组名[*或者@]} :引用全部元素,以空格为间隔。
${#数组名[*或者@]}:引用数组的个数为变量。

删除数组
unsettle 数组名【数组下标】 删除单个元素
unset 数组名 删除整个数组

切片应用;
数组的切片应用
${数组名:offset:number}
offset:要跳过的元素个数 (不写从头取n个) ${数组名::number}
number :要取出的元素个数 (不写取出之后所有。)${数组名:offset}
变量的切片应用
变量长度 如:${#a}
${a:offset:number}
offset 跳过前n个字符
number 取n个字符
${a:offset: -length}
offset 跳过左侧的n个字符
length 去掉最右边n个字符
${a: -length}
length 从右边取n个字符
${a: -levgth:-offset}
先从最右侧向左取到length个字符再从这个字符开始向右取到距离最右侧offset个字符之间的内容。
注意:-length前有一个空格!!!

基于模式取子串
${变量#*字符串}
当在变量中匹配到第一个字符串之后,删除第一个字符串与字符串之前的内容。
${变量##*字符串}
删除自左向右最后一个字符串之前的内容。
${变量%*字符串}
与#相反为从右向左删除到右边第一次出现的最后一个字符。
${变量%%*字符串}
与##相反,删除自右向左最后一个字符串之前的内容。(均删除字符串)
${变量/pattern/substr} 匹配到的第一个字符串替换成substr字符串
pattern 为变量中有的匹配的字符串
substr 替换的字符串
${变量//pattern/substr} 匹配到的所有字符串全部替换成substr字符串
${变量/#pattern/substr} 行首如果匹配就替换
${变量/%pattern/substr} 行尾如果匹配就替换
替换成空就是删除。
${变量^^} :把变量中的所有小写转换成大写
${变量,, } 把变量中的所有大写转换成小写

Image

高级变量用法 有类型变量

declare 选项 变量名
-r 声明或显示只读变量
-i 将变量定义为整数型
-a 将变量定义为数组
-A 将变量定义为关联数组
-f 显示已定义的所有函数名及内容
-F 仅显示已定义的所有函数名
-x 声明或显示环境变量和函数
-l 声明变量为小写
-u 声明变量为大写

eval 该命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。

mktemp 创建临时文件。
mktemp /tmp/file.xxxx
最少三个x
-d 创建临时目录
-p 指定路径
mktemp -p 路径 file.xxx
install 结合了cp chmod chusr 三个命令的功能。
实现了 把文件拷贝过去,然后改所属人、所属组,然后改权限。
-m 权限 如:755
-o 属主
-g 属组
install 选项。。。 【-T】 源文件 目的文件名 单文件
install 选项。。。 源文件。。。 目的目录
install 选项。。。 -t 目的目录 源文件。。。
install 选项。。。 -d 目的目录。。。 创建空目录。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87256

(0)
上一篇 2017-09-16 13:13
下一篇 2017-09-16 15:42

相关推荐

  • 软件包管理

    软件运行环境 ABI(应用程序的二进制接口):Application Binary Interface Windows 与Linux 不兼容 ELF(Executable and Linkable Format)           —&…

    Linux干货 2017-04-23
  • 马哥教育网络班22期+第1周课程练习

    一、描述计算机的组成及其功能。 组成:CPU (运算器+控制器),存诸器(内存与硬盘),输入设备,输出设备。 运算器:对数据进行加工处理的部件(包括算述运算与逻辑运算)。 控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各部件协调的,一步步的完成各种操作。 存储器:计算机记忆或暂存数据的部件 输入设备:人机接口,负责输入信息(数据与指令)转成计算机…

    Linux干货 2016-08-15
  • Linux 进程及作业管理

    Linux 进程及作业管理 概述:      我们在实际的运维工作中经常要对服务器做各种监控,以了解其相关状态,比如,CPU利用率,磁盘空间利用率,等等,这就需要我们了解相关的数据并学会使用各种工具来分析数据。本章就将总结Linux系统中进程管理和作业管理的相关命令、参数和工具,包括:进程的相关定义、分类、状态以及进程查看和管理…

    Linux干货 2016-09-11
  • CentOS Linux 系统计划任务简单介绍

    CentOS  Linux 系统计划任务简单介绍 §·linux 系统计划任务 ※·linux中Centos计划任务的程序为:cron 周期性任务计划:cron 相关的程序包: cronie: 主程序包,提供crond守护进程及相关辅助工具 cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任…

    Linux干货 2016-09-08
  • sed命令的用法和vim编辑器的使用

    一、文本处理工具sed sed [option]….'script] [input-file]… 简介: sed是一种流编辑器,他一次处理一行的内容,处理时把当前处理的行存储在临时缓冲区中,这个缓冲区被称为模式空间,接着用sed命令处理,处理完成后把模式空间的内容送往屏幕,接着处理下一行,知道文件末尾,而文件的内容…

    Linux干货 2016-08-15
  • 文件查找命令find详解

    文件的查找命令 find 用法 功能:实时查找工具,通过遍历指定路径完成文件查找 工作特点: •  查找速度略慢•  精确查找•  实时查找•  可能只搜索用户具备读取和执行权限的目录 语法:   find [OPTION]… [查找路径] [查找条件] [处理动作] 查找路径:指定具体目标路径;默认为当前目录查找条件…

    Linux干货 2016-11-07