linux shell有哪些变量,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} 行尾如果匹配就替换

替换成空就是删除。

${变量^^} :把变量中的所有小写转换成大写

${变量,, } 把变量中的所有大写转换成小写

3c8ce6380daa33c267ccb0e2e66a02de.png

高级变量用法 有类型变量

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值