首页 > 系统相关 >15-1 shell脚本编程进阶字符串切片和高级变量

15-1 shell脚本编程进阶字符串切片和高级变量

时间:2023-06-14 11:47:01浏览次数:39  
标签:shell 15 进阶 url echo str liujinxi root centos8

一、显示字符的长度

[root@centos8 ~]#str=`echo {a..z} |tr -d ' '`
[root@centos8 ~]#echo str
str
[root@centos8 ~]#echo $str
abcdefghijklmnopqrstuvwxyz
[root@centos8 ~]#name=刘进喜
[root@centos8 ~]#echo ${#name}
3
[root@centos8 ~]#echo ${#str}
26

二、切片

root@centos8 ~]#echo ${str:3}
defghijklmnopqrstuvwxyz
[root@centos8 ~]#echo ${str:3:4}
defg
[root@centos8 ~]#echo ${str: -3}    切片倒数第三个
xyz

[root@centos8 ~]#echo ${str:3: -3}  去头去尾
dfghijklmnopqrstuvw

 

三、基于模式取子串

从左到右取

[root@centos8 ~]#url=http://www.baidu.com/index.html
[root@centos8 ~]#echo ${url#*/}
/www.baidu.com/index.html
[root@centos8 ~]#url=http://www.baidu.com:8080/index.html
[root@centos8 ~]#url=httpecho ${url#*:}  懒惰模式
//www.baidu.com:8080/index.html
[root@centos8 ~]#echo ${url##*:}            贪婪模式
8080/index.html
[root@centos8 ~]#
从右到左取

[root@centos8 ~]#echo ${url%:*}
http://www.baidu.com
[root@centos8 ~]#echo ${url%%:*}
http
[root@centos8 ~]#

 

替换

[root@centos8 ~]#getent passwd root
root:x:0:0:root:/root:/bin/bash
[root@centos8 ~]#line=`getent passwd root`
[root@centos8 ~]#echo ${line root liujinxi}
-bash: ${line root liujinxi}: bad substitution
[root@centos8 ~]#echo ${line/root/liujinxi}
liujinxi:x:0:0:root:/root:/bin/bash
[root@centos8 ~]#

四、间接变量引用

[root@centos8 ~]#ceo=name
[root@centos8 ~]#name=liujinxi
[root@centos8 ~]#echo $$ceo
1765ceo
[root@centos8 ~]#echo $$ceo
1765ceo
[root@centos8 ~]#echo '$'$ceo
$name
[root@centos8 ~]#eval echo '$'$ceo
liujinxi
[root@centos8 ~]#

批量创建用户脚本(间接引用变量)

[root@centos8 ~]#cat create_user.sh 
#!/bin/bash
n=$#
[ $n -eq 0  ] && { echo "Usage: `basename $0` username..." ; exit 2 ; }
for i in `eval echo {1..$n}` ;do
        user=${!i}
        id $user &> /dev/null && echo $user id exist || { useradd $user; echo $user created;  }
done

 

标签:shell,15,进阶,url,echo,str,liujinxi,root,centos8
From: https://www.cnblogs.com/liujinxi/p/17476845.html

相关文章

  • 经典webshell流量特征
    开门见山,不说废话判断条件是否符合通信的特征请求加密的数据和响应包加密的类型一致是否一直向同一个url路径发送大量符合特征的请求,并且具有同样加密的响应包一、蚁剑特征为带有以下的特殊字段第一个:@ini_set("display_errors","0");第二个:eval在编码器和解码器都是d......
  • 驱动开发:内核ShellCode线程注入
    还记得《驱动开发:内核LoadLibrary实现DLL注入》中所使用的注入技术吗,我们通过RtlCreateUserThread函数调用实现了注入DLL到应用层并执行,本章将继续探索一个简单的问题,如何注入ShellCode代码实现反弹Shell,这里需要注意一般情况下RtlCreateUserThread需要传入两个最重要的参数,一个是......
  • 2015年11月Xcode7.1(7B91b)打包发布苹果iOS应用指南
    2015年11月Xcode7.1(7B91b)打包发布苹果iOS应用指南 第1步:配置项目的开发授权证书(图1)如图1,选择TARGETS下的项目名称。(图2)如图2,选择BuildSettings,然后找到ProvisioningProfile. (图3)如图3,选择distribution的开发授权证书。这个distribution的开发授权证书来自苹果开发者后台配置......
  • 【SQL】进阶57题
    1.题号1142查询姓“李”的教师数量selectcount(t_id)fromteacherwheret_namelike'李%';/*1.大水题,无脑写2.题号1143查询课程编号为”01“的课程比”02“的课程成绩高的所有学生的学号(尝试了两种写法,未能解决,很蓝瘦~~~)selectsc1.s_id from (selects_i......
  • Educational Codeforces Round 150 (Rated for Div. 2) 题解
    https://codeforces.com/contest/1841https://codeforces.com/contest/1841/problemsD.PairsofSegmentshttps://codeforces.com/contest/1841/problem/D因为\(n\)只有\(2000\),所以考虑枚举每一对\((i,j)\)满足区间有交集并且\(i\neqj\)。如果有交集,就合并。然后......
  • CodeStar2023年春第11周周赛普及进阶组
    T1:等差数本题难度中等,公差等于\(0\)的等差数只含一种数码,公差不等于\(0\)的等差数只有几百个。所以本题的方针是先把公差不等于\(0\)的等差数都找出来。在公差等于\(0\)和公差不等于\(0\)的两类中分别找大于\(n\)的最小树,两者较小的就是答案。T2:炼金工坊补充道具本......
  • vue3进阶——组件基础
    组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构,这和我们嵌套HTML元素的方式类似,Vue实现了自己的组件模型,使我们可以在每个组件内封装自定义内容与逻辑。定义组件当使用构建步骤时,我们一般......
  • java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快
    (文章目录)本文简单的介绍了java常见的几种排序。所有的排序均是一个数组由小到大进行排序。一、冒泡排序1、效率表现和适用范围效率O(n²)适用于排序小列表2、算法实现publicvoidbubbleSortArray(int[]a){ intn=a.length; for(inti=1;i<n;i++){ fo......
  • 代码随想录算法训练营第六天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数
    454.四数相加II1,难点:1,多个数组之间,会有重复出现的数组,如果单用multiset也是会出错的2,如果用mutliset,在使用distance找出来equal_range的值的时候,也是会出现奇怪的错误的2,正确思路1,把重复出现的节点,次数存放到map种,然后进行遍历3,代码:1intfourSumCount(v......
  • shell脚本简介+编写
    1、常用Linux命令2、Linux下脚本编写3、windows下CMD常用命令文章目录一、变量1、系统预定义变量2、自定义变量3、特殊变量:n、......