Linux-shell变量 -用户变量、系统变量、环境变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux-shell变量 -用户变量、系统变量、环境变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4275字,纯文字阅读大概需要7分钟。
内容图文
目录
前言
在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多。
一、系统变量
1.常见的系统变量
变量名 | 含义 |
---|---|
$# | 获取当前执行的Shell脚本后面接的参数的个数 |
$n | 获取当前执行的Shell脚本的第你个参数,$1表示第一个参数,$2表示第二个 参数,以此类推;当n大于9,则用大括号括起来,如${10} |
$? | 获取执行的上一个指令的执行状态返回值(0为成功,非零为失败) |
$* | 获取当前执行的Shell脚本所有传参的参数,不加引号与$@相同,如果加引号 则表示将所有的参数视为单个字符串,相当于“$1 $2 $3 ...” |
$@ | 获取当前执行的Shell脚本所有传参的参数,不加引号与$*相同,如果加引号 则表示将所有的参数视为不同的独立字符串,相当于“$1” “$2” “$3” |
$$ | 获取当前执行的shell脚本的(进程ID号)PID |
$! | 获取上一个在后台工作的进程的PID |
$0 | 获取当前执行脚本的变量名,如果执行脚本包含了路径,那么就包括脚本路径 |
2.示例
示例一:下面是一个名为text.sh的脚本文件通过获取执行时的参数进行对两个参数进行四则运算
if [ $# -eq 2 ] //判断上传参数是否为两个
then
echo "$1+$2=$(($1+$2))" //获取参数1,参数2,进行四则运算
echo "$1*$2=$(($1*$2))"
echo "$1-$2=$(($1-$2))"
echo "$1/$2=$(($1/$2))"
else
echo "USER: $0 var1 var2" //输出提示 当前程序文件名 后跟参数1 参数2
exit
fi
echo $$
[root@localhost tmp]# sh text.sh 2 3 //带两个参数2 3
2+3=5
2*3=6
2-3=-1
2/3=0
1467
[root@localhost tmp]# sh text.sh // 不带参数
USER: text.sh var1 var2
[root@localhost tmp]# echo $?
0
执行上面的脚本文件 首先通过$# 获取参数个数 参数个数大于2 则执行then部分 否则执行else部分
$1 获取第一个参数 2
$2 获取第二个参数 3
$0 获取当前脚本文件名 text.sh
$$ 获取当前脚本PID 1467 1468
$? 获取执行的上一个指令的执行状态返回值 这里text.sh执行成功 所以返回值0
[root@localhost tmp]# mkdir /tmp/adc/c
mkdir: cannot create directory ‘/tmp/adc/c’: No such file or directory
[root@localhost tmp]# echo $?
1
此处mkdir命令执行失败,所以$?返回值为1
示例二:$* 与$@
set -- This "is a" test
[root@localhost ~]# echo $#
3
[root@localhost ~]# echo $1
This
[root@localhost ~]# echo $2
is a
[root@localhost ~]# echo $3
test
[root@localhost ~]# echo $*
This is a test
[root@localhost ~]# echo $@ //不加引号$@和$*二者作用一致,获取所有参数
This is a test
[root@localhost ~]# echo "$*" //加引号后相当于"$1 $2 $3"
This is a test
[root@localhost ~]# echo "$@" //加引号后相当于"$1" "$2" "$3"
This is a test
[root@localhost ~]# for i in "$*";do echo $i;done //将它们分别遍历出来即可看到明显的差别
This is a test
[root@localhost ~]# for i in "$@";do echo $i;done
This
is a
test
二、环境变量
当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些参数。
环境变量可以在~/.bash_profile或者~/.bashrc中设置。
1.常见的环境变量
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 | 调试命令提示符 |
MANPATH | 寻找手册页的路径,以冒号分隔 |
LD_LIBRARY_PATH | 寻找库的路径,以冒号分隔 |
可以定义新的环境变量,使用export命令即可。
[root@localhost tmp]# export NEW="123456" //定义一个新的环境变量NEW
[root@localhost tmp]# echo $NEW //打印环境变量NEW
123456
[root@localhost tmp]#
三、用户变量
用户变量最长用到的变量,使用也十分简单。用户定义的变量名必须由字母,数字及下划线组成,并且变量名的第一个字符不能为数字。
//以下都是不合法的变量
abc#123 //变量名中不能包含除字母数字及下划线以外的字符
123aBc //第一个字符不能为数字
内容总结
以上是互联网集市为您收集整理的Linux-shell变量 -用户变量、系统变量、环境变量全部内容,希望文章能够帮你解决Linux-shell变量 -用户变量、系统变量、环境变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。