SHELL脚本学习-创新互联

一、打印字符串长度
        如下,循环打印下面这名话字母数不大于6个的单词
        She could see the open door of a departmental office.


vim print-str.sh
#!/bin/bash
#打印字符串个数

#第一种解决思路

for i in She could see the open door of a departmental office
do
  [ ${#i} -le 6 ]&& echo $i
done
echo +++++++++++++++++++++++++++++++++++++
#第二种解决思路
for i in She could see the open door of a departmental office
do
  [ `echo $i|wc -L` -le 6 ]&& echo $i
done
echo +++++++++++++++++++++++++++++++++++++
#第三种解决思路
echo "She could see the open door of a departmental office" |awk '{for(i=1;i<=NF;i++) if(length($i)<=6) print $i}'

上面脚本中有一个点给大家说一下:
${#}的作用
帮助文档说明如下:
${#parameter}

${#var} 可以用来计算出变量值的长度
[root@xuegod72 ~]# NAME=martin
[root@xuegod72 ~]# echo ${#NAME}
6
那么${ }还有一些其它方面的作用,比如截取、替换
比如我们定义一个变量:file=/var/log/message


${file#*/}:    删掉第一个 / 及其左边的字符串
[root@xuegod72 ~]# echo ${file#*/}
var/log/message

${file##*/}:  删掉最后一个 /  及其左边的字符串
[root@xuegod72 ~]# echo ${file##*/}
message

${file#*.}:    删掉第一个 .  及其左边的字符串
[root@xuegod72 ~]# file=/var/log/yum.log/xuegod.txt
[root@xuegod72 ~]# echo ${file#*.}
log/xuegod.txt

${file##*.}:  删掉最后一个 .  及其左边的字符串:
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file##*.}
txt

${file%/*}:  删掉最后一个  /  及其右边的字符串:
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file%/*}
/var/log/yum.log

${file%%/*}: 删掉第一个 /  及其右边的字符串:
[root@xuegod72 ~]# echo ${file%%/*}
空值

${file%.*}:  删掉最后一个  .  及其右边的字符串
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file%.*}
/var/log/yum.log/xuegod

${file%%.*}: 删掉第一个  .  及其右边的字符串
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file%%.*}
/var/log/yum

说明:

#  是去掉左边(键盘上#在 $ 的左边)
% 是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是大匹配

创新互联公司是专业的喀左网站建设公司,喀左接单;提供网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行喀左网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

字符串截取

字符串提取:
${file:0:5}:提取最左边的 5 个字节(中间用冒号分开)
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file:0:5}
/var/

${file:5:5}:提取第 5 个字节右边的连续5个字节
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file:5:5}
log/y

对变量值进行替换
${file/var/opt}:将第一个var 替换为opt
[root@xuegod72 ~]# file=/var/log/yum.log/martin.txt
[root@xuegod72 ~]# echo ${file/var/opt}
/opt/log/yum.log/xuegod.txt

${file/var/opt}:将全部var 替换为opt
[root@xuegod72 ~]# file=/var/log/var.log/var.txt
[root@xuegod72 ~]# echo ${file//var/opt}
/opt/log/opt.log/opt.txt

#判断一个文件的扩展名是否为真,如果为真打印“字符串数量”,否则,打印0

  if expr "$1" : ".*\.pub" > /dev/null ; then

   ID_FILE="$1"

  else

   ID_FILE="$1.pub"

  fi

解释:判断位置$1参数的文件扩展名,是否为“.*.pub”,如果为0则为假,否则打印字符串为8

举例:expr "test.txt" : ".*\.pub"        为假

举例:expr "test.pub" : ".*\.pub"     为真

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:SHELL脚本学习-创新互联
本文网址:http://pwwzsj.com/article/ccodsd.html