shell变量
目录
1:定义变量
定义变量的三种形式
variable=a
variable='a'
variable="a"
三种变量定义都是可以的,稍微有所区别
""双引号定义的变量,里面可以添加变量参数,例如
echo "myname is $a" 其中a表示变量可以解析出来,而单引号是不行的
不带引号只能是一些常见的,中间没有空格的变量,否则shell是解析不出来的
2:解析变量
2.1:解析变量使用$或者${}来解析变量,他们的不同点如下:
echo "myname is $ahaha" 这里定义的变量是a但是a和haha写在一起来,shell会以为ahaha是变量,所以解析会报错
正确的操作方式如下:
echo "myname is ${a}haha"这种方式就可以正确的解析变量
3:变量的作用域
变量默认的作用域是全局变量,注意这里定义的全局变量,只是对当前的shell进程有效,也就是当前窗口,重新开个新窗口是无效的,当然子进程也是无效的
变量的三个作用域:
全局变量:a= "leilei" 当前进程有效,开启一个新窗口或者bash运行一下(会开启一个子进程),对子进程是无效的
本地变量:local a="leilei" 只对本地有效,比如在一个函数中,那么就在函数中有效,脱离函数是无效的
环境变量export a="leilei" 环境变量对子进程都是有效的,但是新开一个窗口也是无效的,也就是说子进程继承了父进程的环境变量
4:变量的命令替换
使用方式:a=$(command)
当然也可以用``反引号,只是容易引起错误,且不支持嵌套,所以一般建议使用$()这样的形式
5:删除变量
unset variable_name