变量的定义
(1)变量即在程序运行过程中它的值是允许改变的量
(2)变量是用一串固定的字符来标示不固定的值的一种方法
(3)变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息
(4)在 shell 中变量是不能永久保存在系统中的,必须在文件中声明
在 shell 脚本中变量的种类
(1)环境级变量:只在当前 shell 中生效, shell 关闭变量丢失
a=1 ###给a赋值为1
vim test.sh ###编写脚本,执行后显示a的值
sh test.sh ###发现看不到结果(因为脚本执行时,打开的是另一个shell不在同一环境)
export a=1 ###声明变量
sh test.sh ####结果出现
(2)用户级变量:用户级变量写在用户的骨文件中,只针对当前用户生效
vim .bash_profile ###编辑用户骨文件
写入:export a=1
source .bash_profile ###重新加载信息
echo $a ###显示a的值
注意:切换用户后,就显示不了
编辑用户骨文件后就可以看见
(3)系统级变量:系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效
vim /etc/profile ###编辑系统配置文件
写入:export a=2
source /etc/profile ###重新加载信息
echo $a ###显示a的值
su - student ###切换到student用户
echo $a ###查看a的值依然可以
变量名称的规范
变量名称中通常包含大小写字字母,数字,下划线(不是必须)
变量名称格式
WESTOS_LINUX
Westos_Linux
westoS_Linux
字符的转译及变量的声明
\ 转译单个字符
” ” (双引号) 弱引用,批量转译 “” 中出现的字符
’ ’ (单引号) 强引用,批量转译 ” 中出现的字符
’ ’ 与 ” ” 两者的区别在于, “” 不能转译 “\”,”`”,”!”,”$”
${} 变量声明
变量值传递
写一个脚本验证:
$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 ”
$@ 脚本后跟的所有字符串,模式为“ 1”“2”“3”
用 read 实现变量传递
read WESTOS
read -s WESTOS ####-s,对输入的交互信息进行加密
read -p "input: " WESTOS ####-p,表示输入交互的内容
linux 系统中命令别名的设定
alias ###查看系统中命令别名
alias xie='vim' ###添加命令别名(临时的)
xie
注意:它是临时的,断开再重新连接虚拟机后会不起作用
vim .bashrc ###写进配置文件
alias
source .bashrc ###重新加载配置
alias
su - student ###
alias ###没有添加上
vim /etc/bashrc ###写进主配置文件
source /etc/bashrc
alias
su - student
xie ###此命令别名就可以生效
2.删除你添加的别名
vim /etc/bashrc
####删除之前写进文件的东西
vim .bashrc
source /etc/bashrc
source .bashrc ###重新加载
alias ###查看还在
unalias xie ###去掉xie这个命令别名
alias
利用命令执行结果设定变量
Hostname=$(hostname) ,表示优先执行
Hostname= `hostname` ,表示优先执行
$?
(1)$? 是命令在执行完成之后产生的退出值
范围是 [0-255]
(2)当 $0=0 时标示命令执行没有错误输出
这个值可以用 exit 命令执行
(3)更改脚本中exit 1 ,为exit 66 退出值就会改变
脚本中的函数
脚本中的函数时把一个复杂的语句块定义成一个字符串的方法
写一个脚本,没输入ip提示输入,输入ip判断此ip的主机是否开启,直到输入exit,结束
#!/bin/bash
PING()
{
read -p "please input a ipaddress: " IP
[ "$IP" = exit ] &&{
echo bye
exit 0
}
ping -c1 -w1 $IP &> /dev/null && echo $IP is up || echo $IP is down
PING
}
PING
.