Shell脚本编程入门--Day2

这篇具有很好参考价值的文章主要介绍了Shell脚本编程入门--Day2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

几个简单内置shell命令

echo -n 不换行输出 -e 解析字符串中的特殊符号 (\n, \r, \t, \b), printf是直接识别特殊符号的
eval 执行多个命令 没什么太大作用
exec 不创建子进程执行后面的命令, 并且exit
export 设置环境变量
time 可以计算命令执行时间

shell字串的语法

${变量} 返回变量的值
${#变量} 返回变量的长度
${变量 : start} 返回下标start及以后的字符
${变量:start:lenght} 返回下标start后面的length个字符
${变量#word} ,删除变量开头最短匹配的字符word
${变量##word}, 删除变量开头最长匹配的字符word
${变量%word} ,删除变量结尾最短匹配的字符word
${变量%%word}, 删除变量结尾最长匹配的字符word
${变量/p/s} 用是s字符串替换最先匹配的字符串p
${变量//p/s} 用s字符串替代所以的p字符串

计算变量长度的各种玩法

echo $name | wc -l 统计的是行数
echo n a m e ∣ w c − L 统计的是最长的一行的长度 e x p r l e n g t h " name | wc -L 统计的是最长的一行的长度 expr length " namewcL统计的是最长的一行的长度exprlength"{name}"
echo “${name}” | awk ‘{print length($0)}’
echo KaTeX parse error: Expected '}', got 'EOF' at end of input: {name} //最快

批量修改文件名

-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_1_finished.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_1_finished.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_2_finished.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_2_finished.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_3_finished.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_3_finished.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_4_finished.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_4_finished.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_5_finished.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_5_finished.png
# 解析 : ``是将结果输出, mv是改名, ${file/_finished/}, 将finished改为空格
[chen@iZ0jl780lb0oio7v4b0chbZ sub_str]$ for file in `ls *.jpg *.png`; do mv $file `echo ${file/_finished/}`; done;  
[chen@iZ0jl780lb0oio7v4b0chbZ sub_str]$ ll
total 0
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_1.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_1.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_2.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_2.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_3.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_3.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_4.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_4.png
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_5.jpg
-rw-rw-r-- 1 chen chen 0 May 19 14:50 chenlang_5.png

特殊shell扩展变量


result=${str:-word}, 如果str为空,返回word字符串给result, 如果str不为空, 返回str

result=${str:=word} , 如果str为空,用word赋值给str,并且返回给result, 如果str不为空,直接返回str

${str:?word}  如果str为空,则word当作strerr输出, 否则输出str

${str:+word} ,如果str为空, 什么都不做, 否则word返回。

实际应用

数据备份, 删除过期的数据脚本
find --搜索 xargs --删除
find 需要搜索的目录 -name 搜索的文件名字 -type 文件类型 -mtime + 7 | xargs rm -f
#超过7天的

dir_path=/data/my_sql/dir
#下面其实不安全的,例如dir_path为空,上面的一行代码被注释掉了等
find ${dir_path} -name `*.tar.gz` -type f  -mtime + 7 | xargs rm -f

find ${dir_path:=/data/my_sql/dir} -name `*.tar.gz` -type f  -mtime + 7 | xargs rm -f

父子shell

source 和点,执行脚本,在当前shell进程执行生效
bash 和sh 和./script 会创建子shell进程去执行

pstree命令,看到如下情况,就是父shell进程环境

 ├─sshd───sshd───sshd───bash───pstree

ps -ef
-f 显示UID PID PPID
-e 列出所有进程的信息
– forest 可以显示父子进程的一个结构
ps -ef --forest

例如 : 输入操作 ps -ef --forest
Shell脚本编程入门--Day2

创建进程列表(创建子shell)

(cd ~; pwd; ls; cd /tmp/; pwd; ls)
加上小括号,就是开启子shell去执行命令

创建子shell的意义? – 提高并发执行的能力
如果父shell 在ping www.baidu.com ,这个操作会一直运行, 会阻塞其他操作!!
那么子shell的意义就在于这里。

echo $BASH_SHELL
结果为0 , 当前shell环境
结果为其他,就是开辟了子shell去执行文章来源地址https://www.toymoban.com/news/detail-457517.html

到了这里,关于Shell脚本编程入门--Day2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【shell编程入门】stable diffusion webui的webui.sh脚本解析

    通过webui.sh,我们可以在linux系统下安装虚拟环境,并启动stable diffuson webui。 BASH_SOURCE[0] : 这是一个包含当前 Bash 脚本文件名的数组。 ${BASH_SOURCE[0]} 表示当前脚本的文件名。 dirname -- \\\"${BASH_SOURCE[0]}\\\" : dirname 命令用于获取文件路径的目录部分。这里它获取了 ${BASH_SOURCE[0]} 即当前

    2024年01月21日
    浏览(42)
  • Shell脚本编程实践——第3关:使用Shell脚本创建文件目录

    任务描述 本关任务:设计一个Shell程序,在/home目录下建立一个userdata目录,在userdata目录下再建立5个目录,即user1~user5,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。 相关知识 为了完成

    2023年04月22日
    浏览(46)
  • Shell脚本编程进阶

    Shell脚本编程进阶 定义 for循环中LIST列表的生成方式 (1) 直接给出列表 (2) 整数列表: (3) 使用可以返回列表的命令 (4) 使用glob,如:*.sh (5) 变量引用 for特殊格式定义及使用 while循环定义 continue [N]:提前结束第N层的 本轮循环 ,而直接进入下一轮判断;最内层为第1层 break [N]:提

    2024年02月14日
    浏览(45)
  • Shell脚本编程

    视频地址https://www.bilibili.com/video/BV1hW41167NW/?p=1vd_source=977d52a6b92ce8b6ae67c16fc61f0428 第一章 Shell概述 大数据程序员为什么要学习Shell呢? 需要看懂运维人员编写的Shell程序 偶尔会编写一些简单的Shell程序来管理集群,提高开发效率。 Shell概述 Shell是一个命令行解释器,它接收应用程

    2024年02月04日
    浏览(47)
  • 【shell脚本编程大全-笔录02】

    传送门:【shell脚本编程大全-笔录01】 ​ 使用正则表达式最大的问题在于有不止一种类型的正则表达式。Linux中的不同应用程序可能会用不同类型的正则表达式。 ​ 正则表达式是通过正则表达式引擎实现的。正则表达式引擎是一套底层软件,负责解释正则表达式模式并使用

    2024年02月15日
    浏览(39)
  • Linux——Shell脚本编程(1)

    1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。 2)对于 JavaEE 和 Python 程序员来说,工作的需要,要求你编写一些 Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。 3) 对于大数据程序员来说,需要编写Shell程序来管

    2024年02月09日
    浏览(60)
  • 【shell脚本编程大全-笔录01】

    全局、局部环境变量 ​ 用户变量(局部变量):修改的设置只对某个用户的路径或执行起作用; ​ 系统变量(全局变量):影响范围是整个系统 ; 系统环境变量基本上都是使用全大写字母,以区别于普通用户的环境变量。 查看 env、printenv和set之间的差异: 1、set命令会显

    2024年02月16日
    浏览(41)
  • Linux_5_Shell脚本编程

    程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结构: 数据在计算机中的类型和组织方式 面向过程语言 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理 问题规模小,可以步骤化,按部

    2024年02月13日
    浏览(48)
  • Linux实验4 shell脚本编程基础

    1.假设在/tmp下有以当前用户的帐号命名的目录,请在命令行中临时修改环境变量PATH的值,要求该目录的路径附加到该变量的最后。 2.请在命令行中临时设置命令输入提示行格式为:“当前系统时间-用户#”。 3.在命令行定义一个字符串变量str,并且赋值为“test for shell”,然

    2024年04月17日
    浏览(52)
  • Shell脚本——编程规范与echo命令

    目录 一.Shell脚本编程概述 1.基本概念 2.作用 3.Linux系统中常见的Shell脚本种类 4.应用场景 5.问题补充 5.1 为什么系统上合法的Shel1要写入/etc/she1ls这个文件? 5.2 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell? 二.Shell脚本的构成规范 三. Shell脚本的执行 1.脚本执行

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包