====== Shell ====== * [[https://effective-shell.com/|Effective shell]] 免费shell教程电子书 ===== Shell Script ===== * [[https://www.runoob.com/linux/linux-shell.html]] * 变量处理: | ''${var}'' | 变量var的值, 与$var相同 |   | ''${var-DEFAULT}'' | 如果 var 没有被声明, 那么就以 $DEFAULT 作为其值 | | ''${var:-DEFAULT}'' | 如果 var 没有被声明, 或者其值为空, 那么就以 $DEFAULT 作为其值 |   | ''${var=DEFAULT}'' | 如果 var 没有被声明, 那么就以 $DEFAULT 作为其值 | | ''${var:=DEFAULT}'' | 如果 var 没有被声明, 或者其值为空, 那么就以 $DEFAULT 作为其值 | | ''${var+OTHER}'' | 如果 var 声明了, 那么其值就是 $OTHER, 否则就为 null 字符串 | | ''${var:+OTHER}'' | 如果 var 被设置了, 那么其值就是$OTHER, 否则就为 null 字符串 |   | ''${var?ERR_MSG}'' | 如果 var 没被声明, 那么就打印 $ERR_MSG | | ''${var:?ERR_MSG}'' | 如果 var 没被设置, 那么就打印 $ERR_MSG | | ''${!varprefix*}'' | 匹配之前所有以 varprefix 开头进行声明的变量 | | ''${!varprefix@}'' | 匹配之前所有以 varprefix 开头进行声明的变量 | * 字符串处理: | ''${#string}'' | \$string 的长度 | | ''${string:position}'' | 在 \$string 中, 从位置 \$position 开始提取子串 | | ''${string:position:length}'' | 在 \$string 中, 从位置 \$position开始提取长度为 \$length 的子串  | | ''${string#substring}'' | 从变量 \$string 的开头, 删除最短匹配 \$substring 的子串 | | ''${string##substring}'' | 从变量 \$string 的开头, 删除最长匹配 \$substring 的子串 | | ''${string%substring}'' | 从变量 \$string 的结尾, 删除最短匹配 \$substring 的子串 | | ''${string%%substring}'' | 从变量 \$string 的结尾, 删除最长匹配 \$substring 的子串  | | ''${string/substring/replacement}'' | 使用 \$replacement, 来代替第一个匹配的 \$substring | | ''${string//substring/replacement}'' | 使用 \$replacement, 代替所有匹配的 \$substring | | ''${string/#substring/replacement}'' | 如果 \$string 的前缀匹配 \$substring, 那么就用 \$replacement 来代替匹配到的 \$substring | | ''${string/%substring/replacement}'' | 如果 \$string 的后缀匹配 \$substring, 那么就用 \$replacement 来代替匹配到的 \$substring |