码迷,mamicode.com
首页 > 系统相关 > 详细

Shell脚本笔记(二)Shell变量

时间:2018-01-19 11:45:39      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:字符串   image   bubuko   个人   inf   eve   输入   功能   作用域   

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[0]}
#three
echo ${array[*]}
#one tow three four
#删除
unset array[1]
unset array[*]

五)特殊变量

1)位置参数变量

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

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

$*---------------------------------获取当前脚本的所有参数,交双引号时相当于"$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 命令参数

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

4)read:

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

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

5)shilft:

命令格式:shilft—Shilft positional parameters

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

6)exit:

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

2.处理变量内容

技术分享图片

技术分享图片

技术分享图片

 

Shell脚本笔记(二)Shell变量

标签:字符串   image   bubuko   个人   inf   eve   输入   功能   作用域   

原文地址:https://www.cnblogs.com/Shadowplay/p/8310027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!