02 Shell变量

什么是Shell变量
  数学中有方程,方程的原理就是用一个名称(未知数)代替未知数进行运算。同理,在Shell中,变量就是代替一个东西的名称。
  定义:Shell中的变量是一个字符或字符串。
  变量的作用:变量是一个名称,用来代替一个复杂的内容。这个内容可以是任何东西,比如其他变量、路径、数值、函数、表达式等。使用变量可以大大简化代码书写,我们甚至可以直接对变量进行操作而不用知道变量表示什么内容。

定义变量
  定义(产生)变量的唯一方法是赋值。赋值就是用等号连接变量和内容,变量写在等号左边,内容在右边,即“变量=内容”的格式。注意等号两边不能有空格,变量的内容要加双引号。

变量的分类和特性
  Shell变量分为两类:环境变量(全局变量)和普通变量(局部变量)。
  环境变量可以在定义它们的Shell和子Shell中使用。bash中内置了一些环境变量,你也可以自定义环境变量。
  普通变量只能在定义它们的Shell函数或Shell脚本中使用,一般由开发者在开发脚本程序时定义。

环境变量
  环境变量一般是指用export命令导出的变量,用于定义Shell的运行环境,保证Shell命令的正常执行。Shell通过环境变量来确定登陆的用户名、命令路径、终端类型、登录目录等。
  规范的环境变量的名字全部大写。并且定义环境变量之前要用export命令导出定义。
  自定义环境变量的方法有三种

export 变量名=内容
变量名=内容 ; export 变量名
declare -x 变量名=内容
  系统环境变量保存在家目录的.bash_profile中或/etc/profile中。修改环境变量只要重新定义就行了。如果想让环境变量永久生效,将环境变量放到上面的系统配置文件中。
  查看变量使用set、env、declare命令。set显示所有环境和普通变量。env只显示所有环境变量,declare输出所有变量、函数、整数。
  输出环境变量用$ 变量名。(echo输出是要加双引号的,但是有$的变量输出不用双引号)。比如

echo $变量名
printf “$变量名”
  无引号和双引号输出效果相同。
  删除环境变量使用unset命令。格式:unset 变量名。

普通变量
  普通变量只在当前Shell的生存期内有效,新进程或关闭Shell则普通变量消失。
  普通变量定义有三种写法。

变量名=内容
变量名=‘内容’
变量名=“内容”
  引号问题是Shell编程的重点!无引号、单引号、双引号的含义是不同的。当内容为连续数字、字符串、路径是可使用无引号,无引号时特殊字符会转义,有变量时变量会被解析出来。单引号内不转义,引号内是什么就输出什么,就是一个字符串。双引号作用和无引号一致,双引号内会转义,适合断续内容输出。
  不仅变量定义时有引号之分,输出时也有引号之分,引号作用同上。
  引号的规范:数字可以不打引号,想解析后输出统一打双引号,想原样输出打单引号。
  普通变量输出也是$ 变量名,或$ {变量名},两种写法没区别,效果相同。

  如果你想把命令的执行结果赋值给变量,格式是:

变量名=`命令`
变量名=$(命令)
1
2
变量名定义规范
  变量名只能由数字、字母、下划线(_)组成,不能以数字开头,其中不能有空格。

posted @ 2019-07-14 09:09  上海一亩地  阅读(157)  评论(0编辑  收藏  举报