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
上一次登录:五 910 17:18:41 CST 2021pts/0 上
[test@localhost ~]$ exec date
20220127日 星期四 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语言开发效率最高,尽可能的减少管道符操作
posted @   savagee  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示