linux--shell--字符串操作

字符串简介

1、大括号{ }用法实例
1)纯{ }用法
拓展功能:例如:ls {name1,name2}.sh ;touch {1..3}.sh
代码组织功能:例如:多条命令在当前shell中执行 { cmd1;cmd2;cmd3;},注意cmd1与{之间有空格,cmd3后边有;
2)$结合{ }用法
取值拓展功能:例如:var=dreamer;echo ${var}way 此条语句输出dreamerway
替换结构:${var:-string},${var:+string},${var:=string},${var:?string}
A,${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时,则用变量var的值来替换${var:-string};对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时,用string替换${var:=string}的同时,把string赋给变量var: ${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。
    B. ${var:+string}的替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量 var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的) 
     C,${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。
模式匹配替换结构:${var%pattern},${var%%pattern},${var#pattern},${var##pattern}
第一种模式:${variable%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式;
     第二种模式: ${variable%%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式;
     第三种模式:${variable#pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式;
     第四种模式: ${variable##pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式;
     这四种模式中都不会改变variable的值,其中,只有在pattern中使用了*匹配符号时,%和%%,#和##才有区别。结构中的pattern支持通配符,*表示零个或多个任意字符,?表示零个或一个任意字符,[...]表示匹配中括号里面的字符,[!...]表示不匹配中括号里面的字符。

2、中括号[ ]用法实例
单中括号用于条件测试:"["是一个可执行程序,路径是"/usr/bin/["if  [ $num1 -eq $num2 ] ; then 等价于 if  /usr/bin/[ $num1 -eq $num2 ] ; then 
还等价于if  test $num1 -eq $num2 ; then
单中括号用于数组:例如:输出数组全部元素echo ${array[@]}
双中括号:单中括号加强版 [[是 bash 程序语言的关键字,并不是一个命令,在单括号中是不可以用 ||  &&等关系运算符号的,只能用-a -o等等,例如[[ $arch_com = i386 || $ARCH = i*86 ]]

3、小括号( )用法实例
单括号代码组织功能:跟上边{}不同的是,此处命令块会在子shell中运行,例如:(cmd1;cmd2;cmd3) 这三条命令的执行不会影响当前的shell环境
单括号数组初始化功能:例如:array=(1 2 3 4 5)
双括号算术运算比较功能:例如:for((i=0;i<9;i++)) 如果不采用双括号可用
for i in `seq 0 9`或者for i in {0..9}代替
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值