linux shell编程学习笔记3shell变量.docx
- 文档编号:16531193
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:8
- 大小:264.46KB
linux shell编程学习笔记3shell变量.docx
《linux shell编程学习笔记3shell变量.docx》由会员分享,可在线阅读,更多相关《linux shell编程学习笔记3shell变量.docx(8页珍藏版)》请在冰点文库上搜索。
linuxshell编程学习笔记3shell变量
1、什么是变量
保存变化的数据
——变量名:
名称固定,由系统预设或用户自定义
——变量值:
根据用户设置、系统环境变化而变化
2、如何定义变量
——变量名=变量的值
2.1变量名的规则
(1)数字、字母、下划线
(2)字母区分大小写
(3)当变量名相同时,后赋值的生效
(4)不能以数字开头
(5)等号两边不能有空格
(6)能以下划线开头
(7)变量名不能有特殊符号
(8)尽量不要使用系统关键字做变量名
3、如何使用变量
——#$变量名
4、如何输出变量
——#echo$变量名
5、如何删除变量
——#unset变量名
6、如何查看已经定义的变量
1)env查看系统环境变量,环境变量一般都是大写
2)set查看所有变量,包括系统环境变量和自定义变量
3)set|grep变量名//查看某个变量
7、变量的生命周期和范围(作用域)
7.1局部变量
(1)在脚本里定义的变量只有在脚本里生效
(2)默认定义的变量只在当前的shell里可以使用,无法在子shell使用。
要想定义的变量让所有的shell都可以用,要在系统启动时把它定义为全局变量
7.2全局变量
定义为全局变量的方法:
(1)export变量名//已经定义好的变量设为全局变量
(2)export变量名=变量值//将要定义的变量定义为全局变量
export其实就是声明一下这个变量的意思,让该shell的子shell也知道这个变量的变量值.如果export后面不加任何变量名,则它会声明所有的变量。
8、变量的累加赋值
1)#a=100
#b=$a
2)#c=$a$b
3)#c=$a2$b
4)#c=$a"2"$b
5)PATH=$PATH:
/usr/local/mysql/bin
[root@ndbA~]#a=100
[root@ndbA~]#echo$a
100
[root@ndbA~]#a=${a}100
[root@ndbA~]#echo$a
100100
[root@ndbA~]#a=${a}"100"
[root@ndbA~]#echo$a
100100100
9、变量的相关配置文件:
9.1系统级环境变量配置文件
——对所有用户生效。
执行脚本;定义变量;执行命令
(1)/etc/profile
——这个文件预设了几个重要的变量,例如PATH,USER,LOGNAME,MAIL,INPUTRC,HOSTNAME,HISTSIZE,umas等等
(2)/etc/bashrc
——这个文件主要预设umask以及PS1变量
9.2用户级环境变量配置文件
——仅对某个用户生效,执行脚本;定义变量;执行命令
(1)~/.bashrc
——定义了用户的个人化路径与环境变量的文件名称。
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次
(2)~/.bash_profile
——该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
9.3/etc/profile、/etc/bashrc、~/.bashrc、~/.bash_profile的执行顺序
(1)
首先这个:
/etc/profile
然后这个:
/etc/bashrc。
接下来这个:
~/.bashrc
最后这个:
~/.bash_profile
(2)验证
——以创建目录的方式验证
1)在/etc/profile最后添加mkdir-p/test/profile命令
2)在/etc/bashrc最后添加mkdir-p/test/bashrc命令
3)在~/.bash_profile最后添加mkdir-p/test/.profile命令
4)在~/.bashrc最后添加mkdir-p/test/.bashrc命令
5)重启系统
6)#ls-la–full-time查看
由图可知:
最先创建的是profile目录,然后是bashrc目录,接下来是.bashrc隐藏目录,最后是.profile隐藏目录。
可以得出结论:
四个配置文件执行的顺序依次是/etcprofile/etc/bashrc~/.bashrc~/.bash_profile
10、shell里的变量的类型
10.1系统环境变量:
——系统在其他时读取系统的配置文件定义的变量,一般系统环境变量为大小字母。
下面是常见的环境变量
PATH决定了shell将到哪些目录中寻找命令或程序
HOME当前用户主目录
HISTSIZE历史记录数
LOGNAME当前用户的登录名
HOSTNAME指主机的名称
SHELL当前用户Shell类型
LANG语言相关的环境变量,多语言可以修改此环境变量
MAIL当前用户的邮件存放目录
PWD当前目录
10.2预定义变量:
——shell里事先预定好的变量,变量名和变量值是固定的,不能直接赋值和修改,需要时可直接调用
(1)$$
——保存运行的进程的PID号
[root@sqlB~]#echo$$
1864——bash的进程号
(2)$?
——保存命令执行结果的返回状态。
0表示正常,1-255表示上一条不成功,不同的非零结果代表的返回状态是不同的
[root@sqlB~]#cd/etc/
[root@sqlBetc]#echo$?
0
[root@sqlBetc]#cda
-bash:
cd:
a:
没有那个文件或目录
[root@sqlBetc]#echo$?
1
[root@sqlB/]#ls-e/etc/
ls:
无效选项--e
请尝试执行"ls--help"来获取更多信息。
[root@sqlB/]#echo$?
2——代表上条命令的参数错误
[root@sqlB/]#/etc/passwd
-bash:
/etc/passwd:
权限不够
[root@sqlB/]#echo$?
126——代表没有权限执行上条命令
[root@sqlB/]#aa
-bash:
aa:
commandnotfound
[root@sqlB/]#echo$?
127——代表上条执行的命令不存在
(3)$0
——保存当前运行的进程名或脚本名。
注意是数字0
[root@sqlB~]#echo$0
-bash
(4)$#
——保存位置变量的个数
[root@sqlB~]#echo$#
0
(5)$*
——保存所有为位置变量的值
[root@sqlB~]#echo$*
——空值,因为没有位置变量
[root@sqlB~]#
(6)$!
——保存后台最后一个进程的PID号
[root@sqlB~]#lftp&
[1]2690
[root@sqlB~]#echo$!
2690
10.3位置变量:
——执行脚本或调用函数时后边跟着的参数
$1
$2
$3
.
.
.
当位置大于9时,需要加上大括号{};
如:
${11},11是当成一个整体,$11是$1+1
10.4自定义变量:
——由用户自己设置、修改和使用的变量
11、与变量相关的符号
11.1单引号:
''
——调用变量使用单引号,变量被当做普通字符处理
11.2双引号:
""
——调用变量使用双引号,变量被当做普通字符处理
单引号和双引号的区别:
用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用
[root@sqlB~]#name=tom
[root@sqlB~]#echo'$name'
$name
[root@sqlB~]#echo"$name"
tom
11.3反撇号:
``
——将命令的执行输出作为变量值
[root@sqlB~]#date
2014年02月20日星期四11:
47:
09CST
[root@sqlB~]#day=`date`
[root@sqlB~]#echo$day
2014年02月20日星期四11:
47:
40CST
[root@sqlB~]#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux shell编程学习笔记3shell变量 shell 编程 学习 笔记 变量