码迷,mamicode.com
首页 > 其他好文 > 详细

变量的用法

时间:2020-02-07 22:41:14      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:答案   ror   hide   onclick   ***   对比   yarn   字符串   blog   

变量替换技术图片

例1:从头匹配最短删除

[root@localhost ~]# var1="I love you,Do you love me"
[root@localhost ~]# echo ${var1#*ov}
e you,Do you love me

例2:从头匹配最长删除

[root@localhost ~]# var1="I love you,Do you love me"
[root@localhost ~]# echo ${var1##*ov}
e me

例3:后匹配最短删除

[root@localhost ~]# echo ${var1%ov*}
I love you,Do you l

例4:从后匹配最长删除

[root@localhost ~]# echo ${var1%%ov*}
I l

变量测试

技术图片

expr代表字符串,以下以string代表expr为例

注意使用expr索引下标从1开始

#当变量str未赋值时为string
[root@localhost ~]# echo ${str-string}
string
#当变量str为空时为空
[root@localhost ~]# str=
[root@localhost ~]# echo ${str-string}

#当变量str赋值后为str的值
[root@localhost ~]# str=123
[root@localhost ~]# echo ${str-string}
123

以下类推,生产环境中不常用

计算字符串长度

语法1:${#string}

语法2:expr length “$string”

[root@localhost ~]# var="Hello World"
[root@localhost ~]# echo ${#var}
11
[root@localhost ~]# echo `expr length "$var"`
11

获取字符串中索引位置

获取字符的索引

语法:expr index “$string” substr

默认时将start切割成s,t,a,r,t字符依次去在var中查找

所以uniq就被分割成u,n,i,q依次对比var变量中的第一个字符q,所以返回1

#查找start在var中的位置
[root@localhost ~]# var="quickstart is a app"
[root@localhost ~]# echo `expr index "$var" start`
6

[root@localhost ~]# echo `expr index "$var" uniq`
1

获取子串的索引

语法:expr match “$string” substr

字串必须从头开始匹配

[root@localhost ~]# echo $var
quickstart is a app
[root@localhost ~]# echo `expr match "$var" app`
0
[root@localhost ~]# echo `expr match "$var" quicks`
6
[root@localhost ~]# echo `expr match "$var" quickstart`
10

抽取字符串中的子串

技术图片

例1:从第10位提取到最后,索引下标从0开始

效果与例4一样

[root@localhost ~]# var="kafka hadoop yarn mapreduce"
[root@localhost ~]# echo ${var:10}
op yarn mapreduce

例2:从第10位开始提取5位字符

[root@localhost ~]# echo ${var:10:5}
op ya

例3:从右往左提取5个字符,下标从1开始,注意冒号后有空格

[root@localhost ~]# echo ${var: -5}
educe

从右往左提取的5个字符中提取长度为2的字符串

[root@localhost ~]# echo ${var: -5:2}
ed

例5:从左往右第10个字符开始提取长度为5的字符串

注意使用expr下标从1开始

[root@localhost ~]# echo `expr substr "$var" 10 5`
oop y

小练习答案

技术图片
[root@localhost ShellScript]# cat example.sh
#!/bin/bash
string="Bigdata process framework is Hadoop,Hadoop is an open source project"

function print_tips
{

        echo "***************************************"
        echo "* (1) 打印string长度                  *"
        echo "* (2) 删除字符串中所有的Hadoop        *"
        echo "* (3) 替换第一个Hadoop为Mapreduce     *"
        echo "* (4) 替换全部Hadoop为Mapreduce       *"
        echo "* (5) 重新打印                        *"
        echo "***************************************"


}

function len_of_string
{

        echo "${#string}"
}

function del_hadoop
{

        echo "${string//Hadoop/}"
}

function rep_hadoop_mapreduce_first
{

        echo "${string/Hadoop/Mapreduce}"
}

function rep_hadoop_mapreduce_all
{

        echo "${string//Hadoop/Mapreduce}"
}

print_tips
echo "【string=$string】"
while true
do
        read -p "Pls input your choice 1|2|3|4|5|q|Q :" choice
        case $choice in
                1)
                        len_of_string
                        ;;
                2)
                        del_hadoop
                        ;;
                3)
                        rep_hadoop_mapreduce_first
                        ;;
                4)
                        rep_hadoop_mapreduce_all
                        ;;
                5)
                        print_tips
                        ;;
                q|Q)
                        exit
                        ;;
                *)
                        echo "Error,input only in {1|2|3|4|q|Q}"
                        ;;
                esac
done

小练习答案

命令替换

-d指定分隔符,默认使用tab键作为分隔符,-f取第几段

cat /etc/passwd | cut –d “:” –f 1

变量的用法

标签:答案   ror   hide   onclick   ***   对比   yarn   字符串   blog   

原文地址:https://www.cnblogs.com/tz90/p/12274816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!