【转】shell学习笔记(二) ——shell变量
2014-05-18 22:25
281 查看
在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多。
1 系统变量
2 环境变量
当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些参数,例如LOGNAME变量。环境变量可以在~/.bash_profile或者~/.bashrc中设置,
下面列举了常见的环境变量:
当然也可以定义新的环境变量,使用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非空串时为真。
——shell变量">
——shell变量">
1 系统变量
变量名 | 含义 |
$# | 命令行参数的个数 |
$n | $1表示第一个参数,$2表示第二个参数,以此类推 |
$0 | 当前程序的名称 |
$? | 前一个命令或许或函数的返回码 |
$* | 以“参数1 参数2 。。。”形式保存所有参数 |
$@ | 以“参数1”“参数2”。。。形式保存所有参数 |
$$ | 本程序的(进程ID号)PID |
$! | 上一个命令的PID |
当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些参数,例如LOGNAME变量。环境变量可以在~/.bash_profile或者~/.bashrc中设置,
下面列举了常见的环境变量:
变量名 | 含义 |
PATH | 命令搜索路径,以冒号为分隔符。注意与DOS下不同的是当前目录不在系统路径里 |
HOME | 用户home目录的路径名,是cd命令的默认参数 |
COLUMNS | 定义了命令编辑模式下可使用命令行的长度 |
EDITOR | 默认的行编辑器 |
VISUAL | 默认的可视编辑器 |
FCEDIT | 命令fc使用的编辑器 |
HISTFILE | 命令历史文件 |
HISTSIZE | 命令历史文件中最多可包含的命令条数(默认1000条) |
HISTFILESIZE | 命令历史文件中包含的最大行数 |
IFS | 定义shell使用的分隔符 |
LOGNAME | 用户登录名 |
指向一个需要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 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非空串时为真。
——shell变量">
——shell变量">
相关文章推荐
- Shell脚本学习笔记(二)--变量
- shell学习笔记(二)shell变量与运算符
- Linux Shell 学习笔记(三)--Shell变量
- Shell 变量 学习笔记
- shell script 学习笔记-----shell变量
- Shell脚本学习笔记(二)--变量
- Shell学习笔记 - Shell变量
- shell学习笔记:变量相关
- Linux Shell 学习笔记2:Shell变量
- Shell学习笔记---变量赋值与运算
- shell学习笔记一 变量
- Shell学习笔记(7)-高级变量之算术运算
- shell学习笔记之二(变量)
- Shell学习笔记——变量
- Shell学习笔记(6)-高级变量之变量扩展
- shell变量学习笔记
- shell学习笔记--特殊变量参数
- shell 脚本学习笔记-1 终端打印 变量 环境变量