bash变量详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash变量详解相关的知识,希望对你有一定的参考价值。

                                bash变量详解

                                                       作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

  大家都知道Shell是一门脚本语言,脚本语言的最好的优点就是我们写的代码不需要编辑就可以直接运行,当然你也可以把它归类为解释性语言。它的好与坏我在这里就不唠叨了,这种语言并不适合做大量的数据运算,Shell最大的好处就是可以帮助运维人员减少重复操作,或者说帮助运维人员来完成系统性的运维工作。而且使用起来特别容易上手,接下来我们就一起研究一下这门语言。

  今天,我们要来学习的是Shell的变量,说起Shell的变量,那可了不得,我们可以将其分为4类:

    a>.用户自定义变量;

    b>.环境变量;

    c>.位置参数变量;

    d>.预定义变量;

  那么究竟是怎么回事呢?这些变量你心中是否都知道呢?接下来就跟着我一起来深入浅出Shell变量吧。

 

 

一.用户自定义变量

 

1.什么是变量
  变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。
  简单的说,变量就是用一个固定的字符串(也可能是字符数字等的组合),替代更多更复杂的内容,这个内容里可能还会包含变量的路径,字符串等其他的内容。使用变量最大的好处就是方便,当然,除了方便以外,很多时候在编程中使用变量也是必须的,否则就发无法完成开发工作。

 

2.变量设置规则
  a>.变量名称可以由字母,数字和下划线组成,但是不能以数字开头;
  b>.在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型;
  c>.变量用等号连接值,等号左右两侧不能有空格;
  d>.变量的值如果有空格,需要使用单引号或双引号包括;
  e>.在变量的值中,可以使用“\\"转义符;
  f>.如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“$变量名”或用"${变量名}"包含;
  g>.如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令;
  h>.环境变量名建议大写,便于区分;

 

 

 

3.变量分类
  a>.用户自定义变量;
  b>.环境变量:这种变量中主要保存的是和系统操作环境相关的数据;
  c>.位置参数变量:这种变量主要是用来想脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的;
  d>.预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的;

 

4.本地变量(用户自定义变量)
  定义变量
                       技术分享
  删除变量
                          技术分享
二.环境变量
1.环境变量是什么
  用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。
 
2.设置环境变量
  注意:env是专门用来查看环境变量的,set是可以查看所有的变量,不仅仅可以看到环境变量。

                                    技术分享

                                技术分享

3.系统常见的环境变量
  a>.系统查找命令的路径;
1 [[email protected] ~]# echo $PATH
2 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
3 [[email protected] ~]#
4   b>.PATH变量叠加;
5 [[email protected] shell]# PATH="$PATH":/root/yinzhengjie/shell
6 [[email protected] shell]# echo $PATH
7 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/yinzhengjie/shell:/root/yinzhengjie/shell:/root/yinzhengjie/shell
8 [[email protected] shell]#

                               技术分享

4.自定义系统命令行提示符的变量

                           技术分享

  自定义命令行提示符蛮有意思的,下面就随便举了几个例子。
1 [[email protected] ~]#PS1=[\\[email protected]\\h\\#W]\\$
2 [[email protected] ~]#PS1=[\\[email protected]\\h \\W]\\$  //Linux默认设置。
3 [[email protected]04:22:30 ~]#PS1=[\\[email protected]\\h \\W]\\$

 

                                        技术分享

 
三.位置参数变量
1.位置参数变量

                               技术分享

2."$n"的用法展示
  “$n”的作用就是讲命令行中的参数传递给脚本,让脚本对这些参数执行相应的操作,我们可以一起来看一下以下的案例:
 1 [[email protected] shell]# more argv1.sh
 2 #/bin/bash
 3  
 4 num1=$1
 5 num2=$2
 6 sum=$(($num1 + $num2))
 7 cha=$(($num1 - $num2))
 8  
 9 echo "两个参数的和:"$sum
10 echo "两个参数的差:"$cha
11 [[email protected] shell]#

                                  技术分享

3.“$*”和"[email protected]"之间的区别
  “$*”中的所有参数看成是一个整体,而“[email protected]”中的每个参数都看成是独立的,所以“[email protected]”中有几个参数。
                           技术分享
四.预定义变量
1.预定义变量

                          技术分享

应用案例:
 1 [[email protected] shell]# more argv3.sh
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6  
 7 echo "当前的进程PID是:$$"
 8  
 9 find /root -name yinzhengjie.sh > res.txt &
10  
11 echo "后台执行的进程是:$!"
12 [[email protected] shell]#

                                    技术分享

2.接收键盘输入
                          技术分享
应用案例:
 1 [[email protected] shell]# more read.sh
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6  
 7 read -t 10 -p "请输入用户名:" name
 8 echo "您输入的用户名是:$name"
 9  
10 read -s -t 10 -p "请输入你的年龄:" age
11 echo "\\n"
12 echo "您输入的年龄是:$age"
13  
14 read -n 1 -t 10 -p "请问你是性别是[Boy/Girl]:" sex
15 echo "\\n"
16 case $sex in
17 "B")
18 echo "性别是:boy"
19 ;;
20 "G")
21 echo "性别是:girl"
22 ;;
23 *)
24 echo "性别未知!"
25 ;;
26 esac
27 [[email protected] shell]#

                                        技术分享

五.数值运算与运算符
1.declare声明变量类型
                                技术分享
2.数值运算,方法一
                              技术分享
3.expr或let数值运算工具
                            技术分享
4.“$((运算式))”或"$[运算式]"
                        技术分享
5.运算符
                   技术分享
六.变量测试与内容替换
  通过x的值判断y是否存在,可以用下面的这种方式:
                技术分享
例子:测试x=${y-新值}
                              技术分享

                                       技术分享

                                       技术分享

 


以上是关于bash变量详解的主要内容,如果未能解决你的问题,请参考以下文章

玩转Bash变量

Shell学习之Bash变量详解

Bash的变量类型

Linux bash基础特性二

详解Linux bash变量

sh Bash的代码片段