变量

简介:

   “变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。”举个例子,当用户上传一个值,这个值传递给程序。这个值在程序运行中被多次调用赋值。在系统做升级时,维护和调试升级就要在每次调用赋值的地方修改。这时,如果将用户上传的值定义为一个变量。系统需要赋值时,就去调用这个变量。在以后的维护升级时,只需要更改变量的值即可。


1、系统变量

    Shell变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用shell变量。变量名必须以字母或下划线字符开头。其余的字符可以是字母、数字(0~9)或下划线字符。任何其他的字符都标志着变量名的终止。名字是大小写敏感的。给变量赋值时,等号周围不能有任何空白符。为了给变量赋空值,可以在等号后跟一个换行符。用set命令可以查看所有的变量,unset abc命令可以清除变量abc,abc相当于没有定义过。readonly abc可以把abc变为只读变量,定义之后不能对abc进行任何更改。对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[root@server01 ~] # echo $SSH_TTY       ##查看自己在哪个TTY下面
/dev/pts/1
[root@server01 ~] # echo $PATH
/usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
[root@server01 ~] # echo $HOME
/root
[root@server01 ~] # echo $PWD
/root
[root@server01 ~] # echo $LOGNAME
root
[root@server01 ~] # env                 ##系统常用变量
XDG_SESSION_ID=13
HOSTNAME=server01
......
MAIL= /var/spool/mail/root
PATH= /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
PWD= /root
LANG=zh_CN.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME= /root
LOGNAME=root
......
[root@server01 ~] # set                 ##包括系统变量和用户自定义变量
BASH= /bin/bash
......
HISTCONTROL=ignoredups
HISTFILE= /root/ .bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME= /root
HOSTNAME=server01
HOSTTYPE=x86_64
......
PATH= /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
PIPESTATUS=([0]= "0" )
PPID=30083
PS1= '[\u@\h \W]\$ '
PS2= '> '
......
[root@server01 ~] #
[root@server01 ~] # abc=51cto.com            ##设置自定义的变量     
[root@server01 ~] # set | grep abc           ##查询自定义变量中的abc
abc=51cto.com
[root@server01 ~] # unset abc                ##取消自定义的变量
[root@server01 ~] # set | grep abc
[root@server01 ~] #
[root@server01 ~] # a='$a$b'                 ##变量值有特殊符号时需要用单引号括起来
[root@server01 ~] # echo $a
$a$b
[root@server01 ~] # a='a$b'
[root@server01 ~] # echo $a
a$b
[root@server01 ~] # c=1;d=2
[root@server01 ~] # echo $c$d
12
[root@server01 ~] # export abc=123.com       ##制作一个全局的环境变量
[root@server01 ~] # bash
[root@server01 ~] # echo $abc
123.com


2、环境变量

1)系统环境变量

/etc/profile 用户环境变量,交互,登录才执行

/etc/bashrc 用户不用登录,执行shell就生效

2)用户环境变量

~/.bashrc         ##自定义一些别名alias

~/.bash_profile   ##自定义一些变量

~/.bash_history   ##自定义历史相关配置

~/.bash_logout    ##自定义退出后所执行的动作


若要配置环境变量之类,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登陆,该文件总会被调用。


定义PS1能够改变命令提示符的格式:

1
2
3
4
5
[root@server01 ~] # echo $PS1            ##PS1输出左边的一个格式
[\u@\h \W]\$
[root@server01 ~] # PS1='[\u@\h \w]\$’  ##更改格式为绝对路径
[root@server01 ~] #cd /etc/sysconfig/network-scripts/
[root@server01  /etc/sysconfig/network-scripts ] #

使用#PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$'命令可以带颜色的显示。这种方式只是暂存在内存中,想要永久修改,还是需要进入/etc/bashrc修改。










本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1943310,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 C++
6变量
6变量
42 1
|
5月前
|
C++
c++常见变量
c++常见变量
40 0
|
18天前
|
Java Python
变量
变量
40 14
|
3月前
|
存储 C语言
C 变量
【7月更文挑战第2天】C 变量。
19 2
|
5月前
|
存储 C语言 容器
C变量
C变量
34 1
|
5月前
|
存储 程序员 编译器
C++程序中的变量
C++程序中的变量
50 1
|
5月前
|
Python
DTL变量
【2月更文挑战第28天】DTL变量。
40 1
C4.
|
5月前
|
存储 数据安全/隐私保护 C++
C++的claas变量
C++的claas变量
C4.
42 0
|
5月前
|
存储 编译器 C++
c++的变量
c++的变量
37 0
思考变量引起的巨大变化
思考变量引起的巨大变化