分享
 
 
 

Linux 编程之Bash中的变量

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

本文作者:chenhao

1.用户定义的变量

用户定义的变量有字母数字及下划线组成,并且变量名的第一个字符不能为数字.

与其它UNIX名字一样,变量名是大小写敏感的.

对于变量,用户可按如下方式赋值:

name = value

在引用变量时,需在前面加$符号,用户也可以在变量间进行相互赋值,如:

(前面的$是命令提示符)

$ JOHN = john

$ NAME = $JOHN

$ echo Hello $NAME

Hello john

也可以用变量和其他字符组成新的字,这时可能需要把变量用{}括起,如:

$ SAT = Satur

$ echo Today is ${SAT}day

Today is Saturday

对于未赋值的变量,Bash以空值对待,用户也可以用unset命令清除给变量

赋的值.

Bash中还可以使用数组变量,其赋值有两种:

(1) name[index] = value

(2) name = (value1 ... valuen) 此时下标从0开始

数组下标的范围没有任何限制,同时也不必使用连续的分量.

Bash中关于变量的内建命令有:

(1) declare和typeset.两者具有一样的功能.其选项有:

[-/+]a 设置/撤消变量的数组属性

[-/+]i 设置/撤消变量的整数属性

[-/+]r 设置/撤消变量的只读属性

[-/+]x 设置/撤消变量的输出属性

-p var 显示变量属性

(2) export和local.

export把变量输出到环境中,用法为:

export name

export name = value

这里需要简单介绍一下export的作用:当Bash shell执行一个

程序时,将首先为该程序建立一个新的执行环境,称为子shell,

在Bash Shell中变量都是局部的,即它们只是在创建它们的子

Shell中是有意义的,使用export后,变量被设置为全局变量,这

时可以被其它子Shell所识别

local标记变量为局部的(如只能被函数内部使用),用法为:

local name

local name = value

(3) readonly.

指定变量为只读,执行后,改变量不能被再次赋值,用法为:

readonly name

2.位置变量或Shell参数

Bash Shell在解释用户命令时,将把命令行的第一个子作为命令,而其它字作为

参数通过位置变量传递给程序.$1,...,$9分别代表第一,...,九个参数.其中1-9

是真正的参数名,"$"符只是用来标识变量的替换.

位置变量$0指命令对应的可执行名.

其它的还有:

$# 送给命令的参数个数

$@ 所有的参数,每个用双括号括起

$* 所有的参数,用双括号括起

3.与Shell有关的变量

(1) Shell自身设置的一些常用变量:

LINENO 正在执行的命令在脚本中的行号

PWD 用户当前目录的全名

OLDPWD 最近一次执行cd之前,用户当前目录的全名

PPID 父进程ID

$ 当前进程ID

RANDOM 随机数(范围0-32767)

SECONDS Bash Shell的运行时间,单位是秒

REPLY select和read命令使用,以后会讲到

OPTARG

ORTIND 这两个变量由getopt命令设置

UID 当前用户的User ID

_ 上一条命令使用的最后一个参数

(2) 影响Shell行为的一些常用环境变量:

PATH 命令搜索路径,以冒号为分隔符.注意与DOS下不同的是,

当前目录不在系统路径里

HOME 用户home目录的路径名,是cd命令的默认参数

COLUMNS 定义了命令编辑模式下可使用命令行的长度

EDITOR 默认的行编辑器

VISUAL 默认的可视编辑器

FCEDIT 命令fc使用的编辑器

HISTFILE 命令历史文件

HISTSIZE 命令历史文件中最多可包含的命令条数

HISTFILESIZE 命令历史文件中包含的最大行数

IFS 定义SHELL使用的分隔符

LOGNAME 用户登录名

MAIL 指向一个需要SHELL监视其修改时间的文件.当该文件修改后,

SHELL将发消息You hava mail给用户

MAILCHECK SHELL检查MAIL文件的周期,单位是秒

MAILPATH 功能与MAIL类似.但可以用一组文件,以冒号分隔,每个文件后

可跟一个问号和一条发向用户的消息

SHELL SHELL的路径名

TERM 终端类型

TMOUT SHELL自动退出的时间,单位为秒,若设为0则禁止SHELL自动退出

PROMPT_COMMAND 指定在主命令提示符前应执行的命令

PS1 主命令提示符

PS2 二级命令提示符,命令执行过程中要求输入数据时用

PS3 select的命令提示符

PS4 调试命令提示符

MANPATH 寻找手册页的路径,以冒号分隔

LD_LIBRARY_PATH 寻找库的路径,以冒号分隔

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有