Linux系统中的shell变量

一、变量资料链接

  • 变量的定义

      变量即在程序运行过程中它的值是允许改变的量;变量是用一串固定的字符来标示不固定的值的一种方法;变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息,在 shell 中变量是不能永久保存在系统中的,必须在文件中声明。

  • 在 shell 脚本中变量的种类
         在 shell 中变量分为环境级变量,用户级变量,系统级变量环境级变量只在当前 shell 中生效, shell 关闭变量丢失;用户级变量写在用户的骨文件中,只针对当前用户生效;系统级变量被写在系统的配置文件 /etc/profile 或

者 /etc/profile.d/ 中,对于所有用户都生效。

  • shell 脚本中变量的定义方法
           环境级:打开另一个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
[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

调用:

编写脚本:利用函数删除用户,建立用户并设置密码

调用:




猜你喜欢

转载自blog.csdn.net/l675655077/article/details/80768632