参考:http://www.runoob.com/linux/linux-shell-variable.html
Shell变量
变量声明
与其他不同,在初始化时=两端不能有空格。
示例中使用的``是将``中指令的执行结果赋值给变量。同样的,$()也可以达到相同的效果,但是更建议使用后者,因为,反引号容易和单引号搞混,另外多层次的进行命令替换的时候,反引号是必须要进行转义进行处理,比较麻烦。
同时参看eval:https://blog.csdn.net/qq_26768741/article/details/68062328
变量使用
使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
只有使用时才加$,其余情况即使是再赋值也不要加。
定义变量后,使用readonly+变量名声明只读。
使用unset+变量可以删除变量。
shell字符串
使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
只有使用时才加$,其余情况即使是再赋值也不要加。
字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。【注意,这里不用引号指的是中间没有空格的情况】
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;【因此当echo的内容需要较多的转义时,考虑‘’】
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
在这里字符串的拼接不是用加号,而是直接邻接即可。 【这里直接相连,单引号,双引号,变量可以混用】
echo ${#string} 字符串长度
echo ${string:1:4} 注意,第一个是起始位置,第二个是截取的长度,不是截止位置
?查找自字符串
shell数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。【注意,这个数组可以包含多种不同类型的元素】
取元素方法与大多语言一致。使用array[@]可以获取全部元素。【使用@时,打印出来以空格分割】
长度:类似string,可以获取单个元素,也可以获取总个数${#string[@]}
shell注释
单行注释#
多行注释:<<EOF/'/! EOF/'/!