Linux命令备忘实例(2)——变量
2015-09-01 23:53
639 查看
1.设定规则
变量的等号两边不能有空格符变量名称只能为数字或英文字母,不能以数字开头
双引号内的变量可替换为其值,单引号内的变量为纯文本
可以使用反引号`命令`或者$(命令)的方式将内部命令的返回值赋给变量
变量扩增与赋值时,直接堆砌:$a=$a“ ”$b
某个变量需要在其他子程序执行时使用,可以用export使变量变为环境变量
大写字母变量为系统默认变量,自定义变量用小写
取消变量使用:unset 变量名称
user@ubuntu:~$ 12n=123 12n=123: command not found user@ubuntu:~$ n12=123 user@ubuntu:~$ n12=${n12}" "$n12; echo ${n12} 123 123 ###使用命令的结果,可以赋值给变量,也可以直接使用到新的命令中 user@ubuntu:~$ cd /lib/modules/`uname -r`/kernel user@ubuntu:~$ cd /lib/modules/$(uname -r)/kernel user@ubuntu:~$ unset n12
变量的作用范围:自定义变量作用于当前shell,环境变量作用于当前及所有子程序。
2.环境变量
环境变量是未在当前进程中定义,从父进程中继承而来的变量。export用来设定环境变量。设定之后,从当前shell脚本执行的任何程序都会继承这个变量,可以按照需要,在应用程序中导出(export)特定的变量。默认情况下,提供了很多的环境变量可供使用。1.env
列出目前shell环境下,与此中断进程相关的所有的环境变量及其内容:user@ubuntu:~$ env HOSTNAME=ubuntu USER=user ...
对于单独一个进程而言,其运行使用的环境变量可以按照如下命令查看($PID设置为对应进程的ID即可):
user@ubuntu:~$ cat /proc/$PID/environ
上述命令返回的是一个包含环境变量及其值的列表,以name=value的形式描述,彼此之间以null字符(\0)分割。
比较重要的环境变量
- HOME:用户家目录,“cd ~”命令返回的目录
- SHELL:目前环境中使用的shell程序是,一般都是/bin/bash
- HISTSIZE:历史命令记录的个数
- MAIL:使用mail命令在收信时系统读取的邮件箱
- PATH:所有可执行文件的搜寻路径,目录与目录之间用冒号分割,可执行文件的搜寻顺序也是按照目录顺序依次进行的
2.set
set命令将bash内的环境变量和自定义变量都显示出来。3.export
环境变量是可以给子程序使用的变量,自定义变量是不会被子程序继续使用的。如果需要将特殊的有意义的自定义变量给后续的子程序使用,那么就是使用export命令来实现。user@ubuntu:~$ export varible
添加一条新路径到PATH变量:
user@ubuntu:~$ export PATH="$PATH:/home/user/bin"
或者
user@ubuntu:~$ PATH="$PATH:/home/user/bin" user@ubuntu:~$ export PATH
3.特性实例说明
1.变量读取read
read直接后接变量名,就会出现等待输入的界面,输入值赋给变量。-t参数可以指定等待的秒数,-p可以借提示字符给用户。-d可以指定输入的定界符结束行,-s用于不回显方式读取密码。user@ubuntu:~$ read -t 10 -p "please input a number:" var please input a number:123 user@ubuntu:~$ echo $var 123
如果用户在10秒内没有输入,直接结束等待返回。
2.declare
user@ubuntu:~$ declare [-aixr] var
-a: 将后面的var变量定义为数组类型
-i:将var定义为整数类型
-x:与export一样,将var定义为环境变量
+x:将var从环境变量撤销为自定义变量
-r:将var设置为readonly,var只能读取,不能修改,也不能unset
user@ubuntu:~$ declare -x PATH user@ubuntu:~$ declare -a arr;arr[1]=12345 user@ubuntu:~$ echo ${arr[1]} 12345
变量的默认类型都是“字符串”,如果不指定类型,则1+2是字符串而不是相加:
user@ubuntu:~$ sum=1+2;echo $sum 1+2 user@ubuntu:~$ declare -i sum=1+2; echo $sum 3
如果将变量声明为readonly,那么需要注销后再登录才能恢复该变量的类型。
3.变量删除
从前面删除变量内容
#:符合删除文字的最短的那个##:符合删除问题的最长的那个
user@ubuntu:~$ path=$PATH;echo $path /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games user@ubuntu:~$ echo ${path#/*lightdm:} /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games user@ubuntu:~$ echo ${path##/*:} /usr/local/games
从后面删除变量内容
%:符合删除文字的最短的那个%%:符合删除问题的最长的那个
user@ubuntu:~$ echo ${path%/lightdm*} /usr/lib/lightdm/ user@ubuntu:~$ echo ${path%%/lightdm*} /usr/lib/
内容替换
user@ubuntu:~$ echo ${path/sbin/SBIN} /usr/lib/lightdm/lightdm:/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games user@ubuntu:~$ echo ${path//sbin/SBIN} /usr/lib/lightdm/lightdm:/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games:/usr/local/games
4.变量测试与替换
首先判断某个变量是否存在,如果存在则使用现有的设定,若变量不存在,则使用一个给定的设定。上述都是根据str是否有来设定var变量的值,”str:” 代表str没定义或者为空,“str”代表没有定义。
5.变量的长度
user@ubuntu:~$ echo ${#var}
6.特殊变量
常用特殊变量如下:- $0:获取当前的shell名
- $UID:检测当前脚本是否是超级用户,如果是则$UID为0
- $$:当前shell的进程号
- $?:上一条指令执行后返回的值
- PS1:bash环境的命令提示字符,默认的提示字符是~/.bashrc中的一行指令指定的
- $IFS:内部字段分割符,用来分割字段的分隔符的环境变量。默认为空白字符(空格,tab,换行符)
user@ubuntu:~$ echo $$ 2052 user@ubuntu:~$ echo $? 0 user@ubuntu:~$ echo $0 bash user@ubuntu:~$ echo $UID 1000 user@ubuntu:~$ PS1='\w>' ~> user@ubuntu:~$ ifs=$IFS;IFS=':' user@ubuntu:~$ lines=1:2:3:4; for l in $lines; do echo $l;done; 1 2 3 4
相关文章推荐
- Linux系统环境编程(系统当前时间)
- linux 多线程API
- CentOS修改默认运行级别
- virtualbox centos6.7 虚拟机访问外网设置
- Linux 命令初探
- 在 Linux 中使用日志来排错
- Linux 软件及作用
- linux安装配置SVN并设置钩子
- linux 关闭电脑触摸板命令
- Linux 常用系统命令
- 通过登入IP记录Linux所有用户登录所操作的日志
- Linux启动/停止/重启Mysql数据库的方法
- Linux下常用的配置IP及route的命令汇编
- linux运维实战练习-2015年9月01日课程作业(练习)安排
- Linux Opendir and readdir will not update along with directory changing
- Linux下常用的配置IP及route的命令汇编
- SSH连接不上Linux的解决方法
- Tsung简易教程-CentOS版
- linux安装配置SVN并设置钩子
- linux 进程查看命令汇集