一、变量资料链接
- 变量的定义
变量即在程序运行过程中它的值是允许改变的量;变量是用一串固定的字符来标示不固定的值的一种方法;变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息,在 shell 中变量是不能永久保存在系统中的,必须在文件中声明。
- 在 shell 脚本中变量的种类
者 /etc/profile.d/ 中,对于所有用户都生效。
- shell 脚本中变量的定义方法
export A=1
用户级:切换用户后失效
vim ~/bash_profile
export A=1
系统级:切换系统后失效
vim /etc/profile
export A=1
ps: export是用来作声明的,将变量放在公共区
- 变量名称的规范
变量名称格式
WESTOS_LINUX
Westos_Linux
westoS_Linux
- 字符的转译及变量的声明
\
转译单个字符
"" 弱引用,批量转译 "" 中出现的字符,
'' 强引用,批量转译 '' 中出现的字符
ps:'' 与 "" 两者的区别在于, "" 不能转译 "\","`","!","$"
${} 变量声明
例如:
A=1
echo $Ab
echo ${A}b
"" 弱引用,批量转译 "" 中出现的字符,
'' 强引用,批量转译 '' 中出现的字符
ps:'' 与 "" 两者的区别在于, "" 不能转译 "\","`","!","$"
${} 变量声明
例如:
A=1
echo $Ab
echo ${A}b
[root@localhost ~]# a=hello world ##有空格无法表示需要转译
bash: world: command not found...
[root@localhost ~]# a=hello\ world ##\转译一个空格
[root@localhost ~]# echo $a
hello world
[root@localhost ~]# a=hello\ world ##\只可以转译一个空格
bash: world: command not found...
[root@localhost ~]# a="hello world" ##用引号批量转译
[root@localhost ~]# echo $a
hello world
[root@localhost ~]# a=1
[root@localhost ~]# echo $ab ##无法区分得有空格或者变量声明
[root@localhost ~]# echo $a b ##用空格区分
1 b
[root@localhost ~]# echo ${a}b ##${}变量声明
1b
[root@localhost ~]# echo 1+1
1+1
[root@localhost ~]# echo $[1+1] ##用$[]将1+1转换成整形2
二、变量的应用
1.shell环境的修改
[root@localhost ~]# echo $PS1 ##查看shell的变量
[root@localhost ~]# PS1='westos>' ##更改shell变量
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# echo $PATH ##查看环境变量
[root@localhost mnt]# chmod +x cc.sh ##给/mnt/下所有文件赋予执行权限
[root@localhost mnt]# cc.sh ##使用相对路径无法调用
[root@localhost mnt]# PATH=$PATH:/mnt ##设置/mnt/为环境级环境变量,其他级别设置方法与上边一致
[root@localhost mnt]# cc.sh ##直接用相对路径可以调用
[root@localhost ~]# a=(1 2 3) ##定义数组
[root@localhost ~]# echo $a
1
[root@localhost ~]# echo ${a[0]} ##调用下标显示数组第零个数,从零开始索引
1
[root@localhost ~]# echo ${a[1]} ##调用下标显示数组第一个数
2
[root@localhost ~]# echo ${a[2]} ##调用下标显示数组第二个数
3
[root@localhost ~]# ls
anaconda-ks.cfg Documents Music Public Videos
Desktop Downloads Pictures Templates
[root@localhost ~]# name=(`ls`)
[root@localhost ~]# echo $name ##相当于下标为0
anaconda-ks.cfg
[root@localhost ~]# echo ${name[1]} ##依次调用name下标显示文件
Desktop
[root@localhost ~]# echo ${name[2]}
Documents
2.变量值的传递
$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为"1 2 3"一串字符
$@ 脚本后跟的所有字符串,模式为"1""2""3"三串字符
vim test.sh ##编写测试脚本
编写脚本:检测$*和$@的区别
vim for.sh
调用:
vim for.sh
编写脚本:利用两个文件新建一组用户,当文件书不够时会提示
vim user_create.sh
调用:
3.使用read实现变量的交互式传递
vim test.sh
测试:
编写脚本:检测ip是否能ping通
vim test.sh
调用:
编写脚本:利用read实现用文件新建一组用户,若文件不存在,会自动提示
vim user_create.sh
4.命令别名的设定
alias xie=‘vim’ ##设置别名,其他级别的同上
xie ##进入vim界面
alias ##查看别名的设置 ##重新打开shell别名设置就会失效
用户级的永久设定
cd
vim .bashrc ##写入alias xie='vim',wq退出保存
source .bashrc
系统级的设定
vim /etc/bashrc ##写入以上信息
source /etc/bashrc
alias ##查看系统中的别名
5.exit退出值
exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。
退出码(exit status,或exit code)的约定:
0表示成功(Zero - Success)
非0表示失败(Non-Zero - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)
>=128 信号产生
vim test.sh
编写脚本:利用退出值检测ip能否ping通
vim check_ip.sh
调用:
编写脚本:利用函数循环检测ip能否ping通,当输入exit时退出
vim check_ip.sh
调用:
编写脚本:利用函数循环检测文件类型
vim file1.sh
调用:
编写脚本:利用函数删除用户,建立用户并设置密码
调用: