shell子串
bash一些基础内置命令
echo
eval
exec
export
read
shift
echo: 打印
-n 不换行输出
-e 解析字符串的特殊符号
\n 换行
\r 回车
\t 制表符 四个空格
\b 退格
[root@localhost shell]# echo '你真胖';echo 还挺可爱
你真胖
还挺可爱
# 不换行打印
[root@localhost shell]# echo -n '你真胖';echo 还挺可爱
你真胖还挺可爱
[root@localhost shell]# echo -n '你真胖';echo -n 还挺可爱
你真胖还挺可爱[root@localhost shell]#
# -e打印解析特殊字符
[root@localhost shell]# echo -e "你挺6\n啊"
你挺6
啊
# 打印命令 printf 自动解析特殊字符
[root@localhost shell]# printf "你好\t我是\t吴彦祖 \n"
你好 我是 吴彦祖
eval : 执行多个命令
# 执行多个命令
[root@localhost shell]# eval ls;pwd
different.sh hello.py hello.sh nohup.out specical.sh var.sh
/root/shell
exec : 不创建子进程,执行后续命令,且执行完毕后,自动exit
[root@localhost shell]# su - test
上一次登录:五 9月 10 17:18:41 CST 2021pts/0 上
[test@localhost ~]$ exec date
2022年 01月 27日 星期四 13:51:54 CST
[root@localhost shell]#
shell子串的花式用法
- 学习基础语法,知道语法后,再应用
${变量} 返回变量值
${#变量} 返回变量长度,字符长度
${变量:start} 返回变量start数值之后的字符,且包含start的数字
${变量:start:length} 提前start之后的length限制的字符,例如${name:4:1}
${变量#word} 从变量开头删除最短匹配的word子串
${变量##word} 从变量开头删除最长匹配的word
${变量%word} 从变量结尾删除最短word
${变量%%word} 从变量结尾开始删除最长匹配的word
# 替换
${变量/pattern/string} 用string代替第一个匹配的pattern
${变量//pattern/string} 用string代替所有的pattern
- 从字符串传左边开始计数
${string: start:length}
# 统计变量值的字符长度
[root@localhost shell]# echo ${#name}
7
# 打印变量值
[root@localhost shell]# echo ${name}
woshisb
#截取索引4以及后面的所有字符
[root@localhost shell]# echo ${name:4}
isb
#截取指定长度字串
[root@localhost shell]# echo ${name:4:2}
is
- 字符串长度统计方法
[root@localhost shell]# echo ${#name}
7
# 用wc统计长度
[root@localhost shell]# echo ${name} | wc -L
7
# 用ecpr计算长度
[root@localhost shell]# expr length "${name}"
7
# 用awk的length函数统计
[root@localhost shell]# echo ${name} | awk '{printf length($0)}'
7
- 字符串长度统计方法这么多,谁最快
# ${#变量} 执行时间
[root@localhost shell]# time for i in {1..3000};do var=`seq -s "hahaha" 10`;echo ${#var} &>/dev/null;done
real 0m4.354s
user 0m2.215s
sys 0m2.156s
# echo ${name} | wc -L 执行时间
[root@localhost shell]# time for i in {1..3000};do var=`seq -s "hahaha" 10`;echo ${var} | wc -L &>/dev/null;done
real 0m9.605s
user 0m5.648s
sys 0m6.105s
# ecpr计算长度 执行时间
[root@localhost shell]# time for i in {1..3000};do var=`seq -s "hahaha" 10`;expr length "${var}" &>/dev/null;done
real 0m9.890s
user 0m4.515s
sys 0m5.422s
# 用awk的length函数统计 执行时间
[root@localhost shell]# time for i in {1..3000};do var=`seq -s "hahaha" 10`;echo ${var} | awk '{printf length($0)}' &>/dev/null;done;
real 0m10.802s
user 0m6.021s
sys 0m7.864s
- 注:shell编程,尽量使用Linux内置的命令,内置的操作和内置的函数,效率最高C语言开发效率最高,尽可能的减少管道符操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具