02 Shell变量
Posted nonstopcoding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
变量名定义规范
变量名只能由数字、字母、下划线(_)组成,不能以数字开头,其中不能有空格。
以上是关于02 Shell变量的主要内容,如果未能解决你的问题,请参考以下文章