一、变量的定义
(1)变量即在程序运行过程中它的值是允许改变的量。
(2)变量是用一串固定的字符来表示不固定的值的一种方法。
(3)变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。
(4)在shell中变量是不能永久保存在系统中的,必须在文件中声明。
二、变量种类和名称规范
1.变量的种类
- 环境变量:只在当前shell中生效,shell关闭后,变量会丢失。
- 用户级变量:被写在用户的骨文件~/.bash_profile中,只针对当前用户生效。
- 系统级变量:被写在系统的配置文件/etc/profile中,对所有用户都生效
- PATH环境变量:用来指定系统查找存放命令的目录
(1)环境变量的修改
export a=1
(2)用户级变量的修改
vim ~/.bash_profile
export a=2
(3)系统级变量的修改
vim /etc/profile
export a=5
2.变量名称的规范
变量名称通常包含大小写字母、数字、下划线(非必须),且不能以数字开头
例如:
- HELLO_LINUX
- Hello_Linux
- hellO_linuX
3.路径设置
vim ~/.bash_profile
export PATH=$PATH:/mnt
在我们系统中有很多命令,在不同的位置都可以使用,如ls、cat等命令,不用知道它的绝对路径。那么我们该怎样设置,才能具备同样的效果呢?
以脚本执行为例,在不同的目录下,输入脚本文件名即可执行脚本。
注意:该操作只做了解,如果写错,我们shell中的命令就会错乱并导致命令不能使用,不是命令被删除了,而是该命令的路径找不到,使用绝对路径就可以使用了。
三、变量
1.变量的转译和声明
\ ##转译单个字符
"" ##弱引用,批量转译""中出现的字符
'' ##强引用,,批量转译''中出现的字符
${} ##变量声明
其中,""和''的区别是,""不能转译 \、`、!、“$”
2.变量值传递
$1 ##脚本后的第一串字符串
$2 ##脚本后的第二串字符串
$3 ##脚本后的第三串字符串
$# ##脚本后所跟字符串的个数
$* ##脚本后跟的所有字符串,模式为“1 2 3 4”
$@ ##脚本后跟的所有字符串,模式为“1” “2” “3” “4”
$$ ##查看进程id
$$用来查看进程的id,由于该进程结束的非常快,我们可以在脚本中写一个监控命令,然后通过【Ctrl+z】将进程打入后台,再通过【ps f】命令查看进程的id
$*与$@的区别如下
3.read实现变量传递
read WESTOS
read -s WESTOS
read -p "input:" WESTOS
4.数组
a=(1 2 3 4 5)
echo ${a[*]} ##查看所有
echo ${a[0]} ##查看数组中第一个元素
echo ${a[4]}b ##查看第五个元素
四、命令别名的设定
1.临时设定
alias 名称='vim' ##临时设定
alias xie='vim'
2.永久设定
vim .bashrc
alias xie='vim' ##永久设定,只能root用户使用
source .bashrc
我们可以看到,只有root用户可以使用该别名,其他用户不能使用,那是因为.bashrc文件中的设置,只针对当前用户。
3.所有用户生效
vim /etc/bashrc ##所有用户都生效,加‘-’和不加‘-’都生效
alias xie='vim'
通过设置,在切换用户身份时,不加“-”也可以使用该别名,如果该别名在/etc/profile系统级变量文件中设定,不加“-”可能不会被系统识别,那么用户就不能使用该命令了。
4.别名的删除
unalias xie ##删除别名
alias ##查看所有使用的别名
五、利用命令执行结果设定变量
Hostname=$(hostname)
Hostname=`hostname`
$?是命令在执行完成之后产生的退出值,范围是【0-255】,当$0=0时表示命令执行没有错误输出,这个值可以用【exit】命令执行
eg.exit 66
程序运行的最终返回值可以被修改,但是只能在【0-255】范围内进行修改,超过该范围,则修改无效,系统会报错。
六、脚本中的函数
脚本中的函数是把一个复杂的语句块定义成一个字符串的方法
练习:编写一个脚本,选择执行动作,可以进行操作