参考: 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/'/!
来源: http://www.bubuko.com/infodetail-2976274.html