【转】shell学习笔记(二) ——shell变量

在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多。

系统变量

 变量名      含义
 $#   命令行参数的个数
 $n  $1表示第一个参数,$2表示第二个参数,以此类推
 $0  当前程序的名称
 $?  前一个命令或许或函数的返回码
 $*  以“参数1 参数2 。。。”形式保存所有参数
 $@  以“参数1”“参数2”。。。形式保存所有参数
 $$  本程序的(进程ID号)PID
 $!  上一个命令的PID

 2 环境变量

当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些参数,例如LOGNAME变量。环境变量可以在~/.bash_profile或者~/.bashrc中设置,

下面列举了常见的环境变量:

 变量名  含义
 PATH  命令搜索路径,以冒号为分隔符。注意与DOS下不同的是当前目录不在系统路径里
 HOME  用户home目录的路径名,是cd命令的默认参数
 COLUMNS  定义了命令编辑模式下可使用命令行的长度
 EDITOR  默认的行编辑器
 VISUAL  默认的可视编辑器
 FCEDIT  命令fc使用的编辑器
 HISTFILE 命令历史文件 
HISTSIZE   命令历史文件中最多可包含的命令条数(默认1000条)
 HISTFILESIZE  命令历史文件中包含的最大行数
IFS   定义shell使用的分隔符
 LOGNAME 用户登录名 
 MAIL  指向一个需要shell监视其修改时间的文件。当该文件修改后,shell将发消息You have mail给用户
 MAILCHECK  shell检查MAIL文件的周期,单位是秒
 MAILPATH  功能与MAIL类似,但可以用一组文件,以冒号分隔,每个文件后可跟一个问号和一条发向用户的消息
SHELL   shell的路径名
 TERM  终端类型
 TMOUT  shell自动退出的时间,单位为秒,若设为0则禁止shell自动退出
 PROMPT_COMMAND  指定在主命令提示符前应执行的命令
 PS1  主命令提示符
 PS2  二级命令提示符,命令执行过程中要求输入数据时用
 PS3  selcet的命令提示符
 PS4  调试命令提示符
 LD_LIBRARY_PATH 寻找库的路径,以冒号分隔 

当然也可以定义新的环境变量,使用export命令即可。

#export NEW_ENV_VAR="This is a new environment variable"

#echo "$NEW_ENV_VAR"

This is a new environment variable

 

3 用户变量

用户变量最长用到的变量,使用也十分简单。用户定义的变量名必须由字母数字下划线组成,并且变量名的第一个字符不能为数字。

//以下都是不合法的变量

abc#123 //变量名中不能包含除字母数字及下划线以外的字符

123aBc //第一个字符不能为数字


4 变量的赋值和使用

shell 下的变量和C中的变量不同,无需声明即可使用,赋值同时即声明了变量。对于用户变量,用户可按如下方法赋值。

variable_name=value

eg:season=Winter

【赋值时,变量和等号之间不要有空格,等号和值之间也不要有空格,否则shell不会认为变量被定义。】

同时,shell也允许在变量间进行相互赋值。引用变量时,需要在变量名前面加$符号。

eg:current_season=$season

使用变量时,需要在变量名钱加$符号,例如echo $season。当然使用时也会遇到一些比较特殊的情况,就是变量名包含在其他字符串中,这时就需要用{}将变量名括起来。

#a=good

#echo “${a}morning”【为了避免变量名上造成混淆,建议总是使用{}将变量名括起来】

输出结果为:goodmorning

若要重置某一变量,即可使用unset命令清空某一变量的赋值。另外,如果在赋值后不希望改变变量,使其类似于常数,则可以使用readonly命令将其设为只读另外,shell的变量默认是全局作用的,如果需要在一定范围内生效,则需要加上local限制。例如local a将设置a为局部变量


5 运算类(其中包括字符和数值)

-n表示non-zero非空串时为真。

原文地址:https://www.cnblogs.com/xiongyunqi/p/3735820.html