三月阳光 发表于 2018-8-20 12:29:39

shell变量的高级操作实例

  shell变量的高级操作实例
  
  1 字符串切片
  格式:${variable:start:length}
  作用:切取变量中指定长度的字符串,并指定起始位置。
name="michael hu"  
echo ${name:2:3}
  
cha
  2 计算字符串的长度
  格式1:${#:variable}
  格式2:expr length "$variable"
# echo ${#name}  
10
  
# expr length "$name"
  
10
  3 删除变量中指定的样式
  格式1:${variable#style}
  作用:由左边开始,删除第一个匹配到的样式
filename="/usr/sbin/ntpdate"  
echo ${filename#/*/}
  
sbin/ntpdate
  格式2: ${variale##style}
  作用:由左开始,匹配整个字符串中的样式,删除匹配到最长的样式
filename="/usr/sbin/ntpdate"  
echo ${filename##/*/}
  
ntpdate
  格式3:${variale%style}
  作用:由右边开始,删除第一个匹配到的样式
filename="/usr/sbin/ntpdate"  
echo ${filename%/*}
  
/usr/sbin
  格式4: ${variable%%style}
  作用:由右边开始,匹配整个字符串中的样式,删除匹配到的最长的字符串
domainname="www.huwho.com"  
echo ${domainname%%.*}
  
www
  4 替换变量中字符串
  格式1:${variable/style/replace}
  作用:替换第一个匹配到的字符串
name="michael hu"  
echo ${name/michael/neo}
  
neo hu
  格式2: ${variable//style/replace}
  作用:替换匹配到的全部字符串
name="michael michael hu"  
echo ${name//michael/sternberg}
  
sternberg sternberg hu
  5 删除变量中的字符串
  格式1:${variable/style/}
  作用:自左匹配,删除第一个匹配到的字符串
echo ${name/michael/}  
michael hu
  格式2:${variable//style/}
  作用:删除匹配到的所有字符串
echo ${name//michael/}  
hu
  6 测试存在性及空值
  格式1:${test_variable-value}
  作用:若变量不存在,则符合判断,传回默认值
# unset name  
# echo ${name-"kong"}
  
kong
  格式2: ${test_variable:=value}
  作用:若变量不存在或其值为空,则符合判断,传回默认值
# test=""  
# echo ${test:="true_kong"}
  
true_kong
  格式3:${test_variable:?"message"}
  作用:测试变量是否为空或不存在,提示错误信息
# test=""  
# echo ${test:?"sorry empty"}
  
-bash: test: sorry empty
  格式4:${test_variable:+"mesage"}
  作用:测试变量是否存在且非空,则符合判断条件
# test="funy"  
# echo ${test:+"true"}
  
true


页: [1]
查看完整版本: shell变量的高级操作实例