shell_study01_360

变量替换

语法说明
${变量名#匹配规则}从变量开头进行规则匹配,将符合最短的数据删除
${变量名##匹配规则}从变量开头进行规则匹配,将符合最长的数据删除
${变量名%匹配规则}从变量尾部进行规则匹配,将符合最短的数据删除
${变量名%%匹配规则}从变量尾部进行规则匹配,将符合最长的数据删除
${变量名/旧字符串/新字符串}字符串替换,第一个旧字符串会被新字符串取代
${变量名//旧字符串/新字符串}字符串替换,全部的旧字符串会被新字符串取代

变量测试

变量配置方法str没有配置str为空字符串str已经配置且为非空
var=${str-expr}var=exprvar=var=$str
var=${str:-expr}var=exprvar=exprvar=$str
var=${str+expr}var=var=exprvar=expr
var=${str:+expr}var=var=var=expr
var=${str=expr}var=exprvar=var=$str
var=${str:=expr}var=exprvar=exprvar=$str

计算字符串长度

语法说明
方法一${#string}
方法二expr length “$string”string有空格,则必须加双引号

获取字符在字符串中的索引位置

语法expr index $string $subchar

在这里插入图片描述

抽取子串

语法说明
方法一${string:start}从string中的start开始
方法二${string:start:length}从start开始,长度为length
方法三${string: -start}从string的右边开始匹配
方法四${string:(-start)}从string的右边开始匹配
方法五expr substr $string $start $length从string中的start开始

注意 expr,索引是从1开始计算的。${string:start},索引是从0开始计算的。

#!/bin/bash

index=1

for user in `cat /etc/passwd | cut -d ":" -f 1`
do
	echo "This is $index user: $user"
	index=$(($index + 1))
done

locale : 查看系统编码格式

expr和$(())

语法格式

语法
方法一expr $num1 operator $num2
方法二$(($num1 operator $num2))

expr 操作符对照表

操作符含义
num1 | num2num1不为空且非0,返回num1;否则返回num2
num1 & num2num1不为空且非0,返回num1;否则返回0
num1 < num2num1小于num2,返回1;否则返回0
num1 <= num2num1小于等于num2,返回1;否则返回0
num1 = num2num1等于num2,返回1;否则返回0
num1 != num2num1不等于num2,返回1;否则返回0
num1 > num2num1大于num2,返回1;否则返回0
num1 >= num2num1大于等于num2,返回1;否则返回0
#!/bin/bash

while true
do
	read -p "pls input a positive number:" num
	expr $num + 1 &> /dev/null
	
	if [ $? -eq 0 ]; then
		echo "\$? = $?"
		if [ `expr $num \> 0` -eq 1 ];then
			for((i = 1; i <= $num; i++))
			do
				sum=`expr $sum + $i`
			done
			if [ $num -eq 1 ];then
				echo "1 = $sum"
			elif [ $num -eq 2 ];then
				echo "1+2 = $sum"
			elif [ $num -eq 3 ];then
				echo "1+2+3 = $sum"
			else
				echo "1+2+3+......+$num = $sum"
			fi
			exit
			
		fi
	fi
	echo "error, input enlegal"
	continue
done

grep

参数:

grep [option] [pattern] [file,file...]
-v  显示不匹配pattern的行
-i  搜索时忽略大小写
-n  显示行号
-E  支持扩展正则表达式
-F  不支持正则表达式,按字符串的字面意思进行匹配
-r  递归搜索

-c  只输出匹配行数的的数量, 不显示具体的内容
-w  匹配整词
-x  匹配整行
-l  只列出匹配的文件名,不显示具体匹配行内容

有类型的变量

1.declare -r  # 声明变量为只读类型
	declare -r var="hello"

2.declare -i # 声明变量类型为整型

3.declare -f # 在脚本中显示定义的函数和内容
4.declare -F # 在脚本中显示定义的函数
5.declare -x # 声明为环境变量,可在脚本中直接使用
6.declare -a

对应+号为取消变量声明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug钞能力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值