博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell字符串基本操作
阅读量:4599 次
发布时间:2019-06-09

本文共 2837 字,大约阅读时间需要 9 分钟。

    shell脚本中一切变量皆字符串,所以必须掌握字符串的常用处理方法。比如获取字符串长度、获取字符串指定位置字符、替换字符串中的指定字符或者删除某些字符等操作。

1、字符串操作列表

(1)var=value,变量定义

$ var="Shell"

(2)${var},变量取值

$ var="Shell"$ echo ${var}Shell

(3)$#var},获取变量长度

$ var="Shell"$ echo ${#var}5

(4)${var:pos} ,获取变量var从指定pos位置开始到结束的字符串

$ var="Hello World"$ echo ${var:6}World

(5)${var:pos:length},获取变量var从指定pos位置开始提取长度为length的字符串

$ var="Hello World"$ echo ${var:0:5}Hello

(6)${var#substring},表示从变量var的起始位置删除最短匹配$substring的字符串 

$ var="/home/oracle/script.sh"$ echo ${var#*/}home/oracle/script.sh

(7)${var##substring},表示从变量var的起始位置 删除最长匹配$substring的字符串

$ var="/home/oracle/script.sh"$ echo ${var##*/}script.sh

(8)${var%substring},表示从变量var的结束位置开始删除最短匹配$substring的字符串

$ var="/home/oracle/script.sh"$ echo ${var%/*}/home/oracle

(9)${var%%substring},表示从变量var的结束位置开始删除最长匹配$substring的字符串

$ var="root/home/oracle/script.sh"$ echo ${var%%/*}root

(10)${var/substring/replace_str},表示使用$replace_str来代替从变量var开始位置第一个匹配到的$substring 

$ var="/oracle/oracle/script.sh"$ echo ${var/oracle/opt}/opt/oracle/script.sh

(11)${var//substring/replacement},表示使用$replacement代替所有匹配的$substring

$ var="/oracle/oracle/script.sh"$ echo ${var//oracle/opt}/opt/opt/script.sh

(12)${var/#substring/replace_str},表示如果变量var的前缀匹配$substring, 那么就用$replace_str来代替匹配到的$substring。必须是第一个字符开始就满足匹配条件。

$ var="oracle/oracle/script.sh"$ echo ${var/#oracle/opt}opt/oracle/script.sh

(13)${var/%substring/replace_str} ,表示如果$string的后缀匹配$substring, 那么就用$replace_str来代替匹配到的$substring。必须是结尾部分满足匹配条件。

$ var="/oracle/oracle/script.sh"$ echo ${var/%sh/txt}/oracle/oracle/script.txt

     说明:(1)substring可以是正则表达式;(2)${string#substring}与${string%substring}是从开始还是结尾开始匹配总是容易混淆,可以这么理解,注释符#总是在前面,#号是从前面开始匹配的。

典型操作实例

(1)判断输入字符串是否全部为数字

#!/bin/bashVAR1="AaBb1234"VAR2="123456"VAR3="123 456"[[ -z "${VAR1//[0-9]/}" ]] && printf "VAR1 all number\n" || printf "VAR1 not all number\n"  # VAR1 not all number[[ -z "${VAR2//[0-9]/}" ]] && printf "VAR2 all number\n" || printf "VAR2 not all number\n"  # VAR2 all number[[ -z "${VAR3//[0-9]/}" ]] && printf "VAR3 all number\n" || printf "VAR3 not all number\n"  # VAR3 not all number

2、字符串判断和替换

  字符串的判断和替换表达式有很多,但是记住var=${str:-expr}这个最常用的表达式就够了。var=${str:-expr}表达式含义为假设str变量为设置或者为空,则将expr值赋值给var变量。实例如下

$ var=${str:-"hello"} #str变量为设置$ echo $varhello$ str="" #str变量值为空$ var=${str:-"hello"}$ echo $varhello$ str="hi" #str变量值为hi$ var=${str:-"hello"}$ echo $varhi

实例   

(1)如果变量没有设置值,指定默认值No

#!/bin/bashread -p "Please check the parameters and input Yes or No continue.[Deafult:Yes]:" YNYN=${YN:-"No"}[[ "X${YN}" == "XNo" ]] && printf "No\n" || printf "Yes\n" #No

 (2)判断字符串的长度,如果不为指定长度,提示错误信息

#!/bin/bashtelphone_num="13112341234"[[ ${#telphone_num} != 11 ]] && printf "Bad number\n" || printf "Good number\n" #output-> Good number
 

 (3)删除字符串中的大写字符

$ VAR="ABC123"$ VAR=$(sed 's/^[A-Z]*//g' <<<${VAR})$ echo $VAR123

 

转载于:https://www.cnblogs.com/linyfeng/p/7352569.html

你可能感兴趣的文章
React组件Components的两种表示方式
查看>>
无限鼠标没反应了
查看>>
CSU - 1356 Catch(dfs染色两种写法,和hdu4751比较)
查看>>
zabbix监控php-fpm的性能
查看>>
温故知新 div + css笔记
查看>>
针对降质模型中的模糊SR
查看>>
ios开发学习笔记001-C语言基础知识
查看>>
POJ1142Smith Numbers一道简单的数学题
查看>>
UIButton(改变Title和image位置)
查看>>
Linux-使用之vim编译安装出现的问题
查看>>
codevs 3314 魔法森林
查看>>
mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题...
查看>>
桐桐的贸易--WA
查看>>
历届试题 高僧斗法
查看>>
linux命令系列 stat & touch
查看>>
[Tools] Webstorm Github的配置与使用
查看>>
鬼谷子绝学
查看>>
Mongodb 笔记04 特殊索引和集合、聚合、应用程序设计
查看>>
使用Post/Redirect/Get实现Asp.net防止表单重复提交
查看>>
用Html5与Asp.net MVC上传多个文件
查看>>