变量基础shell
在 Bash shell 中,每个变量的值都是字符串,变量赋值时,值都会以字符串的形式存储。也就是说,Bash shell 在默认状况下不会区分变量类型,即便你将整数和小数赋值给变量,它们也会被视为字符串 。
编程
变量名bash
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
ide
中间不能有空格,可使用下划线(_)。函数
不能使用标点符号。spa
不能使用bash里的关键字(可用help命令查看保留关键字)。blog
除了显式地直接赋值,还能够用语句给变量赋值进程
使用变量图片
使用一个定义过的变量,只要在变量名前面加美圆符号$便可
作用域
推荐给全部变量加上花括号{ },这是个良好的编程习惯。
例:
修改变量值
第二次对变量赋值时不能在变量名前加,只有在使用变量时才能加 ,只有在使用变量时才能加,只有在使用变量时才能加
例:
单引号和双引号的区别
定义变量时,变量的值能够由单引号’ ‘包围,也能够由双引号" "包围
例:
以单引号’ '包围变量的值时,单引号里面是什么就输出什么,即便内容中有变量和命令(命令须要反引发来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的状况,即不但愿解析变量、命令等的场景。
以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令而且想将其解析后再输出的变量定义。
只读变量
使用 readonly 命令能够将变量定义为只读变量,只读变量的值不能被改变。
变量做用域Scope
Shell变量的做用域(Scope),就是 Shell 变量的有效范围(可使用的范围)。
Shell 变量的做用域能够分为三种:
有的变量只能在函数内部使用,这叫作局部变量(local variable);
有的变量能够在当前 Shell 进程中使用,这叫作全局变量(global variable);
而有的变量还能够在子进程中使用,这叫作环境变量(environment variable)。
export a这种形式是在定义变量 a 之后再将它导出为环境变量,若是想在定义的同时导出为环境变量,能够写做export a=20。
环境变量也是临时的
建立一个新的Shell窗口时,在次访问该环境变量依旧访问不到。
经过 export 导出的环境变量只对当前 Shell 进程以及全部的子进程有效,若是最顶层的父进程被关闭了,那么环境变量也就随之消失了,其它的进程也就没法使用了,因此说环境变量也是临时的。
命令替换
Shell命令替换是指将命令的输出结果赋值给某个变量。好比,在某个目录中输入 ls 命令可查看当前目录中全部的文件,但如何将输出内容存入某个变量中呢?这就须要使用命令替换了,这也是 Shell 编程中使用很是频繁的功能。
替换方式
Shell 中有两种方式能够完成命令替换,一种是反引号,一种是$()
示例