Shell字符串

Shell字符串操作

Shell 中字符串的常用操作如下:

操作 说明
${#string} 返回 $string 的长度
${string:position} 在 $string 中,从位置 $postion 之后开始提取子串
${string:postion:length} 在 $string 中,从位置 $postion 之后开始提取长度为 $length 的子串
${string#substring} 从变量 $string 开头开始删除最短匹配 $substring 子串
${string##substring} 从变量 $string 开头开始删除最长匹配 $substring 子串
${string%substring} 从变量 $string 结尾开始删除最短匹配 $substring 子串
${string%%substring} 从变量 $string 结尾开始删除最长匹配 $substring 子串
${string/substring/replace} 使用 $replace 来代替第一个匹配的 $substring
${string/#substring/replace} 如果 $string 前缀匹配 $substrng 就用 $replace 来代替来代替匹配 $substring
${string/%substring/replace} 如果 $string 后缀匹配 $substring 就用 $replace 来代替匹配 $substring

变量替换

操作 说明
${value:-word} 如果变量名存在且非 null,则返回变量的值。否则,返回 word 字符串
${value:=word} 如果变量名存在且非 null,则返回变量的值。否则,设置这个变量值为 word,并返回值
${value:? “not defined”} 如果变量名存在且非 null,则返回变量的值。否则显示变量名:message,并推出当前的命令或脚本
${value:+word} 如果变量名存在且非 null,则返回 word,否则返回 null

字符串长度

在 Shell 中,计算字符串长度有三种方式:

操作 说明
${#chars} 效率最高
$chars|wc -m 查看字符个数
(exprlength"(expr length "chars") 计算字符串长度

数值计算

(())

计算 n 的 m 次方命令如下:

n**m

(()) 用于执行简单的整数运算,很常用,且效率高,只需要将特定的算术表达式用 “$((” 和 “))” 括起,不支持小数运算。

let

let 赋值表达式 功能等同于 ((赋值表达式)):

i=2 let i=i+8 echo $i #10

expr

expr命令一般用于整数值,但也可以用于字符串,用来求表达式变量的值,同时 expr 也是一个手工命令行计算器:

expr 2 + 3 #数字和运算符之间必须加空格

或者:

expr $[2+4]

判断是否是整数

read -p "Please input a number:" a expr $a + 0 &>/dev/null [ $? -eq 0 ] && echo int || echo chars echo "scale=2; 5.23/3.13" | bc echo "obase=2;8" | bc #把8转成2进制