SHELL 正则表达式

linux中很多地方都需要这样或着那样的去使用、管理、操作字符,多掌握在linux中字符的控制方法直接决定能否写好脚本与更好的控制linux系统。
1, 字符串的截取

		x=abcdef
		${变量名:截取的位置:截取的位数}
		echo ${x:1:2}   							//截取bc,位置是从0开始计算,所以要从1开始才能截取第二个字符b
		echo ${x:1:1}  								//从第2个字符截取,截取1位
		echo ${x:0:2}   							//从第1个字符截取,截取2位
		echo ${x::2}  								 //效果同上,如果从第1位开始截取的话,0可以省略不写

举个栗子:

			编写脚本,可以获取随机的8位字符(将来可以作为为用户配置随机密码时使用)
				#!/bin/bash
				x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789    //定义变量
				for i in {1..8}     //循环8次
				do
				n=$[RANDOM%62]   		//得到0-61之间的随机数
				a=${x:n:1}  					    //随机截取一个x中的字符存储到变量a中
				pass=$pass$a        			//将每次获取的随机字符存储到变量pass中
				done
				echo $pass  					 //循环完8次之后,喊出最终结果,就得到了1个8位的字符

2,字符串的替换

		${变量名称/被替换内容/新内容}
		a=1234		//定义素材	
		echo ${a/3/6}    //把3换成6
		a=11223344    //定义素材
		echo ${a/3/6}    //把3换成6,默认只换一个
		echo ${a//3/6}   //使用两个/可以实现把所有3换成6
		a=333444     //定义素材
		echo ${a//3/}   //把所有3换成空,相当于删除
 bn bnnnnnnnnnnnnn bnn 

3, 字符串的删除

	${变量名称#被删除的内容}   从左往右删除
	${变量名称%被删除的内容}   从右往左删除
	a=abcdefghijklmn
	echo ${a#abcdefgh}	 //从左往右删除到h
	echo ${a#*h}		//效果同上,更精简
	echo ${a#ab}  //从左往右删除到b
	echo ${a#*b}  //效果同上,更精简
	a=abcxyzabcxyz  
	echo ${a##*b}   //从左往右删除到最后一个b
	
	a=abcxyzabcxyz
	 echo ${a%abcxyz}   //从右往左删除abcxyz
	 echo ${a%a*}    //效果同上,更精简
	 echo ${a%%a*}   //从右往左删除到最后一个a
	 echo ${a%%y*}   //从右往左删除到最后一个y

举个栗子:

编写脚本,实现批量修改文件的扩展名
	touch abc{1..10}.txt   //创建10个文件作为素材
	
	#!/bin/bash
	for i in $(ls *.txt)		//找到所有txt文件交给for循环
	do
	        n=${i%.*}   //先用去尾删除扩展名
	        mv $i $n.doc   //再将原文件修改为doc扩展名
	done

变量初值(备用值)的定义

		${变量名:-初值}     //如果变量有值则使用本身的值,如果变量为空,则使用初值
		栗子:
		编写脚本,可以创建用户与配置密码,密码可以自定义,也可以使用默认的123456
			#!/bin/bash
			read -p "请输入用户名:" n
			useradd $n
			read -p "请输入密码:"  p
			echo ${p:-123456} | passwd --stdin $n  //当用户没有输入密码时,密码就是123456 		
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值