定义变量:定义变量不需要加$符号,例如:
name1='ChaseAug' #单引号可以定义 name2="ChaseAug" #双引号也可以定义 name3=ChaseAug #也可以不加引号,表示字符串
使用变量:使用变量时需要加上 $ 符号,或者 ${} 符号。花括号是可选的,主要是帮助解释器识别变量边界。
name=ChaseAug echo $ChaseAug #输出ChaseAug echo ${name} #输出ChaseAug echo ${name} blogs #输出ChaseAug blogs
只读变量:使用 readonly 或者 declare 可以将变量变为只读
name=ChaseAug readonly name declare -r name #两种写法都可以 name=abc #会报错,因为此时name只读
删除变量:unset可以删除变量
name=ChaseAug unset name echo $name #输出空行
变量类型
1.自定义变量(局部变量)
子进程不能访问的变量
2.环境变量(全局变量)
子进程可以访问的变量
自定义变量改成环境变量:
name=ChaseAug export name #第一种方法 declare -x name #第二种方法
环境变量转为自定义变量
export name=ChaseAug #定义环境变量 declare +x name #改为自定义变量
字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号与双引号的区别:
1.单引号的内容会原样输出,不会执行、不会取变量;
2.双引号中的内容可以执行、可以取变量;
name="ChaseAug" echo 'hello,$name \"hh\"' #单引号字符串,输出hello,$name \"hh\" echo "hello,$name \"hh\"" #双引号字符串,输出hello,ChaseAug \"hh\"
获取字符串长度
name="ChaseAug" echo ${#name} #输出8
提取字串
name="hello,ChaseAug" echo ${name:0:5} #提取从0开始的5个字符