${string: start :length}从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start}从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length}从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start}从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars}从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars}从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%*chars}从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars}从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。


字符串分格:

${variable:offset:number}        将变量variable中从offset开始切割number个字符


例:从URL中截取文件名

export DOWNLOAD_URL="http://192.168.12.123/poc/analytics-build_3_1111.tar"
echo ${DOWNLOAD_URL##*/}

方法一:

${变量:移位:个数}

例:

variable="hello_world"
echo ${variable:0:5}

方法二:

${variable:##*string}        在variable中查找string,查找到后就删除string之前的字符,保留后面的;##表示查找多数,保留最后的。

例:

variable="---@--@---@---@--@--"

查找一次:

echo ${variable#*@}

查找多次:

echo ${variable##*@}

从右边删除:

${variable%string*}
${variable%%string*}


例:

url=http://www.scriptjc.com:80
echo ${url%%:*} # http

echo ${url%:*} # http://www.scriptjc.com

echo ${url#*:} # //www.scriptjc.com:80

echo ${url##*:} # 80


字符串替换:

        ${variable/pattern/string}          使用string替换pattern

        ${variable//pattern/string}         使用string替换pattern,两个斜杠表示替换多次

        ${variable/#pattern/string}        只替换以pattern开头的

        ${variable/pattern#/string}        只替换以pattern结尾的

        ${variable/pattern}                     删除

        ${variable/pattern}                     删除多次

        ${variable/#pattern}                   删除行首匹配到的

        ${variable/%pattern}                  删除行位匹配到的

        例:

                variable="---@--@---@---@--@--"

                echo ${variable/@/+}

                ---+--@---@---@--@--

        例:

                echo ${variable//@/+}

                ---+--+---+---+--+--


转大写小写:

        ${variable^^}        将字符串转小写

        ${variable , , }        将字符串转小写


变量赋值:

        ${variable:-value}         如果variable为空,则返回value值

        ${variable:=value}        如果variable为空,则将value值赋给varibale变量

        ${variable:+value}        如果variable不为空,返回value值

        ${variable:?error}         如果variable为空,则返回错误信息


cut

cut -d ' ' -f 1,2

        -d表示要分割的字符

        -f 1,2表示要输出的字段,1-3表示1到3,1,3表示1和3

例:echo $( echo $var | cut -d ' ' -f 1 )