千家信息网

SHELL脚本学习

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一、打印字符串长度如下,循环打印下面这名话字母数不大于6个的单词She could see the open door of a departmental office.vim print-str.s
千家信息网最后更新 2026年10月31日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


说明:

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


字符串截取

字符串提取:
${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" 为真







字符 字符串 右边 字节 思路 作用 扩展名 文件 符号 量值 键盘 长度 脚本 最大 最小 两个 个数 位置 冒号 单词 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高科技互联网 广州互联网科技公司 互联网科技ppt模板 深圳期待互联网科技 湖南诚度互联网科技有限公司 花神(南京)互联网科技有限公司 注册互联网科技公司经营范围大全 洛阳昕诺飞互联网科技有限公司 华夏恒生互联网科技013171 世界互联网领先科技成果获奖 皮皮虾互联网科技有限公司 杭州披云加互联网科技有限公司 南京一网一红互联网科技有限公司 西安有哪些互联网高科技企业 科技互联网行业投资研究 北京天晋互联网科技有限公司 互联网科技对化妆品行业 瑞安市蟠桃会互联网科技有限公司 银川新华互联网科技学校招聘 颐高云石互联网科技 深圳九邦互联网科技有限公司 互联网 科技创新 互联网科技金融公司 杭州互联网科技公司 福州新华互联网科技学校 知乎 岳阳华臻互联网科技有限公司 广东工业互联网大赛深圳学泰科技 云南省自由互联网科技有限公司 扫呗互联网科技有限公司 互联网科技收购价值
0