Shell变量

一)全局环境变量

全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了。另外全局变量会被子shell的同名变量覆盖。

#定义一个全局变量
export a="I want break free"
#或者
b="Sunday Morning"
export b
#删除一个全局变量
unset a

二)局部环境变量

局部环境变量只能在定义它们的进程中可见。

#注意变量名、等号、和值之间是没有空格的
c="Live Forever"
unset c

区别全局环境变量和局部环境变量其实我们只需要记住:全局环境变量作用范围多了个字shell而已。

另外关于脚本中的变量,按局部变量方式定义的在整个其范围是整个脚本文件,包括你在方法中定义的变量。要产生一个"块级作用域"的变量需要在变量定义时加上local

local d="Lucy in the sky"

三)变量的持久化

Linux下所有用户要使用的环境变量:

方案一:将变量放入/etc/profile当中--------致命缺陷:如果升级Linux系统/etc/profile文件会被更新,设置的变量不复存在。

方案二:在/etc/profile.d目录中创建一个以.sh结尾的文件,写入变量。推荐此方法。

个人用户要使用的环境变量:

放入:~/.bashrc文件

四)数组变量

#定义
array=(one tow three four)
#使用
echo ${array[]}
#three
echo ${array[*]}
#one tow three four
#删除
unset array[]
unset array[*]

五)特殊变量

1)位置参数变量

$0--------------------------------可获取当前脚本文件名,如果执行脚本时包含路径,得到的值时路径

$n---------------------------------n为数字,当n超过9时必须采用${10}形式。获取执行脚本的第n个参数

$#--------------------------------当前执行的Shell所接参数个数

$*---------------------------------获取当前脚本的所有参数,交双引号时相当于"$1 $2 $3"

$@-------------------------------不加引号时功能和不加引号的$*一样,加引号时等同于 "$1" "$2" "$3"

2)进程中的特殊状态变量

$?--------------------------------可获取上个指令执行后的返回值

$$--------------------------------执行shell脚本的进程号

六)变量的处理

1.系统内置命令

1)echo:在屏幕上输出变量  命令格式 echo args  其中arges可以是变量和字符串组合

2)eval:

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令。

3)exec:

命令格式: exec 命令参数

功能:在不创建新的子进程前提下,转去执行指定的命令,指定命令执行完毕后,终结该进程。

(exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境)

4)read:

命令格式: read  [参数] [变量名](该变量不能为特殊变量)
功能:从标准输入读取字符串等信息,传给shell内部定义的变量。

read -t  -p 'Pls input the num: ' num

5)shilft:

命令格式:shilft—Shilft positional parameters

功能:在程序中每使用一次shilft语句,都会使所有位置参数向左移动一个位置,最左边的变量被删除。

6)exit:

退出shell,可选定一个数字作为返回值。

2.处理变量内容

最新文章

  1. iOS单元格高度计算
  2. hyperstart 容器创建流程分析
  3. 汉诺塔问题II(模拟)
  4. [OSG][转]osg格式文件
  5. Objective-C(面向对象的三大特性)
  6. ArcGIS许可启动问题
  7. Opengl4.5 中文手册—C
  8. spring官方学习地址
  9. 基于Metronic的Bootstrap开发框架--资产编码打印处理
  10. shallow clone
  11. python线程中的全局变量与局部变量
  12. angularJs绑定select的正确姿势
  13. 冲刺博客NO.4
  14. 让docker中的mysql启动时自动执行sql文件
  15. oracle查询在当前数据库下当前用户拥有的表语句
  16. [转]Maven中profile和filtering实现多个环境下的属性过滤
  17. 查看 linux cpu 、内存、服务器型号和序列号、磁盘、raid 的信息
  18. Nagios学习笔记
  19. CentOS下编译安装python包管理安装工具pip教程
  20. Linux下堆漏洞的利用机制

热门文章

  1. ssh-keygen -t rsa 生成密钥对后如何校验
  2. 基于Redis的分布式锁到底安全吗
  3. LeetCode高频148错题记录
  4. Log4Net帮助类
  5. JSP中三大指令
  6. move_uploaded_file中文乱码
  7. MUI组件四:选择器、滚动条、单选框、区域滚动和轮播组件
  8. 一起学Hadoop——TotalOrderPartitioner类实现全局排序
  9. Python_collections_OrderedDict有序字典部分功能介绍
  10. Flink--sink到kafka