博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bash变量详解
阅读量:5955 次
发布时间:2019-06-19

本文共 4011 字,大约阅读时间需要 13 分钟。

                        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 [root@yinzhengjie ~]# echo $PATH2 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin3 [root@yinzhengjie ~]#4   b>.PATH变量叠加;5 [root@yinzhengjie shell]# PATH="$PATH":/root/yinzhengjie/shell6 [root@yinzhengjie shell]# echo $PATH7 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/yinzhengjie/shell:/root/yinzhengjie/shell:/root/yinzhengjie/shell8 [root@yinzhengjie shell]#

                               

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

                           

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

 

                                        

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

                               

2."$n"的用法展示
  “$n”的作用就是讲命令行中的参数传递给脚本,让脚本对这些参数执行相应的操作,我们可以一起来看一下以下的案例:
1 [root@yinzhengjie 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 "两个参数的和:"$sum10 echo "两个参数的差:"$cha11 [root@yinzhengjie shell]#

                                  

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

                          

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

                                    

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

                                        

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

                                       

                                       

 

转载于:https://www.cnblogs.com/yinzhengjie/p/7653391.html

你可能感兴趣的文章
org.openqa.selenium.StaleElementReferenceException
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
JQuery选择器大全
查看>>
HBase 笔记3
查看>>
java中通过绝对路径将图片存入数据库
查看>>
ConcurrentHashMap(Java8)源码分析
查看>>
Python文件处理之文件指针(四)
查看>>
Numpy用法详解
查看>>
DataGridView在vb.net中的操作技巧
查看>>
PMP考试冲刺进行中。。。
查看>>
大换血的代价
查看>>
RunLoop--
查看>>
chrome 2行换行省略号 ... text-ellipse
查看>>