shellName=“hello,沐淼!”
注意:变量名和等号之间不能有空格;
- 首个字符必须为字母(a-z A-Z)
- 中间不能有空格,可以是下划线
- 不能使用标点符号
- 不能使用bash里的关键字
shellName=“hello,沐淼!”
变量的拼接
name="World" shellName=“hello ${name},沐淼!”
使用echo 输出结果: hello World,沐淼!
只读变量
name="World" readonly name name="hello World" echo ${name}
输出结果:World
删除变量
使用unset命令删除变量
unset 变量名
变量的类型
运行shell时,会同时存在三种变量
- 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量 所有的程序,包括shell启动程序,都能访问环境变量,有些程序需要环境变量保证其正常运行。必要的时候shell脚本也可以定义环境变量
- shell变量 shell变量是由程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
字符串是shell中最长用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串的变量是无效的;
- 单引号字符串中不能出现单引号(对单引号使用转义字符也不行)
双引号的优点
- 双引号里可以有变量
- 双引号里可以出现转义字符
建议:尽量使用双引号
获取字符串的长度
name='www.baidu.com' echo "获取字符串长度:"${#name}
输出结果 :字符串长度 13
提取字符串
name="blog.youkuaiyun.com/mqf163" echo ${name:0:4}
输出结果 :字符串长度 blog
查找字符串
name="blog.youkuaiyun.com/mqf163" echo `expr index "${name}" mqf163`
注意 :" ` " 是反引号 不是单引号
输出结果 :15
Shell数组
bash支持一维数组 不支持多维数组,并且没有限定数组的大小
定义数组
数组用括号来表示,数组元素回见用 " 空格 " 分开#!/bin/bash array_name=("沐淼" "mqf163" "csdn")
或者单独定义各个分量,下标可以使用不连续的,且没有限制:
array_name[0]="mumiao" array_name[1]="mqf" array_name[n]="mqf163"
读取数组
读取数组的单个元素
#!/bin/bash array_name=("nihao" "fafasf" "afaf") echo ${array_name[1]}
输出 fafasf
读取数组的所有元素
或#!/bin/bash array_name=("nihao" "fafasf" "afaf") echo ${array_name[@]}
#!/bin/bash array_name=("nihao" "fafasf" "afaf") echo ${array_name[*]}
输出:
@: nihao fafasf afaf
*:nihao fafasf afaf
获取数组的长度
或者#!/bin/bash array_name=("nihao" "fafasf" "afaf") echo ${#array_name[*]}
输出结果是 3${#array_name[@]}
获取数组元素的长度
Shell注释输出结果是 : 5#!/bin/bash array_name=("nihao" "fafasf" "afaf") echo ${#array_name[1]}
Shell脚本8种字符串截取方法总结 :http://www.jb51.net/article/56563.htm以"#"开头的行就是注释,会被解释器忽略;
sh里没有多行注释 只有单行注释