Shell理论学习(四)

  • 取字符串切片

1.由第四个字符串开始,截取字符串,至字符串结束

[root@kaibin-test ~]# myname="Hello myworld"
[root@kaibin-test ~]# substr=${myname:3}
[root@kaibin-test ~]# echo $substr
lo myworld

2.由第6个字符串开始,截取8个字符长度的字符串

[root@kaibin-test ~]# filename="/root/test.txt"
[root@kaibin-test ~]# substr=${filename:6:8}
[root@kaibin-test ~]# echo $substr
test.txt

3.取部分位置变量

#! /bin/bash
echo $0
echo ${@:1}    由第一个位置变量开始,去所有的位置变量

执行结果:
[root@kaibin-test ~]# ./1.sh 66 77 88 99
./1.sh
66 77 88 99

4.计算字符串长度

[root@kaibin-test ~]# filename="/root/test.txt"
[root@kaibin-test ~]# echo ${#filename}
14
  • 变量扩展:对比样式

  1. 由字符串前面相比,删除相符者,删除最短的

[root@kaibin-test ~]# filename="/etc/sysconfig/network-scripts/ifcfg-eth0"
[root@kaibin-test ~]# r=${filename#/*/}
[root@kaibin-test ~]# echo $r
sysconfig/network-scripts/ifcfg-eth0

2.由字符串前面相比,删除相符者,删除最长的

[root@kaibin-test ~]# filename="/etc/sysconfig/network-scripts/ifcfg-eth0"
[root@kaibin-test ~]# r=${filename##/*/}
[root@kaibin-test ~]# echo $r
ifcfg-eth0

3.由字符串后面相比,删除相符者,删除最短的

[root@kaibin-test ~]# filename="/etc/sysconfig/network-scripts/ifcfg-eth0"
[root@kaibin-test ~]# r=${filename%/*}
[root@kaibin-test ~]# echo $r
/etc/sysconfig/network-scripts

4.有字符串后面相比,删除相符者,删除最长的

[root@kaibin-test ~]# url="www.baidu.com"
[root@kaibin-test ~]# r=${url%%.*}
[root@kaibin-test ~]# echo $r
www
  • 取代或删除部分字符串

语法:${变量/样式/替换的字符串}

  1. 只替换第一个符合的字符串

[root@kaibin-test ~]# act="root:x:0:0:root:/root:/bin/bash"
[root@kaibin-test ~]# r=${act/:/#}
[root@kaibin-test ~]# echo $r
root#x:0:0:root:/root:/bin/bash

2.替换所有的符合的字符串

[root@kaibin-test ~]# act="root:x:0:0:root:/root:/bin/bash"
[root@kaibin-test ~]# r=${act//:/#}
[root@kaibin-test ~]# echo $r
root#x#0#0#root#/root#/bin/bash
  • 把对比符合的字符串删除

语法:${变量/样式}

  1. 只删除第一个符合的字符串

[root@kaibin-test ~]# act="root:x:0:0:root:/root:/bin/bash"
[root@kaibin-test ~]# r=${act/:/}
[root@kaibin-test ~]# echo $r
rootx:0:0:root:/root:/bin/bash

2.删除所有符合的字符串

[root@kaibin-test ~]# act="root:x:0:0:root:/root:/bin/bash"
[root@kaibin-test ~]# r=${act//:/}
[root@kaibin-test ~]# echo $r
rootx00root/root/bin/bash
  • 取变量名称列表,数组索引列表

  1. 取变量名称列表

[root@kaibin-test ~]# filename="ifcfg-eth0"
[root@kaibin-test ~]# dir="/etc/sysconfig/network-scripts/"
[root@kaibin-test ~]# dir_file="$dir/$filename"
[root@kaibin-test ~]# echo ${!di@}
dir dir_file

2.取数组索引列表

[root@kaibin-test ~]# ar=(a b c xy z)

[root@kaibin-test ~]# r=${!ar[@]}
[root@kaibin-test ~]# echo $r
0 1 2 3 4

  • 流控制语句

  1. 使用复合命令((算数运算))

  2. 使用Bash关键词[[]]组成的式子:[[判断式]]

[root@kaibin-test ~]# if [[ str > xyz ]];then
> echo "字符串str比较大"
> else
> echo "字符串str比较小"
> fi
字符串str比较小

3.使用内置命令:test判断式


本文出自 “Linux革命” 博客,请务必保留此出处http://kaibinyuan.blog.51cto.com/7304008/1619672

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。