
shell脚本
文章平均质量分 63
以实例为基础,说明shell的使用和编写
cy413026
这个作者很懒,什么都没留下…
展开
-
linux stdout/stderr重定向到文件,>或tee
正常情况下直接使用 '>'或者tee命令只能把stdout的终端输出重定向到文件中,而stderr的输出是无法写到文件中的。比如在使用svn up时遇到svn 报错的错误,svn ERROR/WARNING用下面的语句是不会将ERROR/WARNING行写到svn.log的要想同时将这两类输出都写到文件中,可以如下操作。原创 2025-01-14 15:55:24 · 411 阅读 · 0 评论 -
用awk将包含key1不包含key2的行及下一行输出/awk&sed删除匹配的块
有时候在vim中搜索和替换并不好做,这个时候可以充分利用shell的grep,sed,awk这些现成的命令。如果不知道怎么使用这些高级命令,可以问aiChat,这种一般会给出正确的脚本。原创 2024-11-05 20:43:36 · 207 阅读 · 0 评论 -
linux shell的$()作用-将一个命令结果输出给另个命令
在Shell脚本中,$()是一种命令替换的语法,它允许你执行一个命令,并将命令的输出插入到当前的命令行中。这种特性使得你能够在一个命令的输出基础上构建另一个命令。原创 2024-09-05 17:48:21 · 621 阅读 · 0 评论 -
linux的ps详解和top区别
1.ps命令ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.注意:ps是显示瞬间进程的状态,并不动态连续;如转载 2022-05-23 10:41:15 · 3477 阅读 · 0 评论 -
以空格分割字符串赋给数组(str可以是输入参数或echo)和read命令
目录1. 可以将变量或echo数据直接()赋给数组2. read命令1. 可以将变量或echo数据直接()赋给数组下面分别将字符"1 2 3"和输入参数$1赋给了数组设该脚本name为test_input2array.sh运行命令为./test_input2array.sh "sd erg wef" sdgf#!/bin/bashtmp="1 2 3"echo $1echo $2tmp_array=($tmp)tmp1_array=($1)tmp2_a..原创 2022-01-28 17:18:56 · 1604 阅读 · 0 评论 -
shell的expr字符处理及整数计算
目录1.常规整数运算2.字符串操作2.1 字符串长度2.2 给出匹配字符串2.3抓取字符串2.4 抓取第一个字符数字串出现的位置1.常规整数运算进行整数运算时需要命令和操作数,操作符都用空格分隔expr 1 + 34add=`expr 1 + 3`echo $add4add=$(expr 1 + 5)echo $add62.字符串操作2.1 字符串长度expr length "abcde"5tmp="abcde"expr le原创 2022-01-27 20:51:10 · 353 阅读 · 0 评论 -
shell脚本的算术运算
1、整数运算a=3b=4((c=a+b))echo c=${c}let d=a-becho d=${d}e=$(expr ${a} \* ${b})echo e=${e}f=$[${a}**${b}]echo f=${f}ff=$[a**b]echo ff=${ff}最终结果如下:c=7d=-1e=12f=81ff=81上面分别给了4种方式,下面分别介绍1.1 (())形式该种情况只支持整数运算,运算式不需要$1.2 let该情况也不需原创 2022-01-04 18:06:07 · 1030 阅读 · 0 评论 -
shell脚本使用字典
下面一段代码给出了shell脚本中使用字典的方法。首先要使用declare -A 来定义一个字典。(目前都使用declare命令而不再使用typeset命令了,这两个命令使用差不多)#!/bin/bashdeclare -A scoredeclare -A scoreSumStscore=([zhangsan]=93 \ [lisia]=90 \ [wanger]=88 \ [alian]=10)echo ${!score[*]}echo原创 2022-01-04 17:42:18 · 11144 阅读 · 0 评论 -
shell脚本中如何使用alias
转载自在shell脚本中使用aliasLinux shell有交互式与非交互式两种工作模式。我们日常使用shell输入命令得到结果的方式是交互式的方式,而shell脚本使用的是非交互式方式。shell提供了alias功能来简化我们的日常操作,使得我们可以为一个复杂的命令取一个简单的名字,从而提高我们的工作效率。在交互式模式下,shell的alias扩展功能是打开的,因此我们可以键入自己定义的alias别名来执行对应的命令。但是,在非交互式模式下alias扩展功能默认是关闭的,此时仍然可以定义al转载 2020-09-19 11:45:08 · 2012 阅读 · 0 评论 -
grep 只显示满足条件的文件中的第一行/(不)包含字符的文件列表/find 只显示文件或文件夹/find 只查找当前层
1.grep 显示匹配文件中的第一行https://cloud.tencent.com/developer/ask/32477grep -m 1 "xxx" filestdbuf -oL grep -rl 'pattern' *2.find 只显示文件或文件夹find . -type f -name "*" :只显示filefind . -type d -name "*" :只显示dirfind . -maxdepth 1 只显示当前层...原创 2020-09-28 10:37:18 · 13213 阅读 · 0 评论 -
shell脚本读写文件/case/二进制处理/循环/参数/字符分割等基本操作
目录1.输入参数处理1.1 $1~$9 加shift1.2getopt2.读写文件2.1 读写文本文件2.1.1读文本2.1.2 写文本2.2读写和显示二进制2.2.1 写二进制2.2.2显示二进制2.2.3 读二进制3.字符串的分割 合并1.输入参数处理在shell中可以用$1~$9来get 参数超过9个参数需要用shift,也可以用read命令get参数,也可以用getopt解析参数。如果要实现如下参数解析:test.sh -i a.原创 2021-11-10 21:56:33 · 4821 阅读 · 0 评论 -
shell中的特殊字符
目录;分号| 管道&&&||# 井号!惊叹号$ 美元符号> 大于号< 小于号= 等号+ 加号>><<- 减号'' 单引号"" 双引号`` 反引号 相当于 $()% 百分号() 单圆括号(()) 双圆括号[] 单方括号[[]] 双方括号. 英文句点号{} 大括号/ 正斜杠^有一篇参考写的更详细一些Shell 特殊字符大全https:转载 2021-12-17 21:24:57 · 222 阅读 · 0 评论 -
shell脚本的字符处理tr和cut和字符串替换${parameter//pattern/string}
目录1. tr2.${parameter//pattern/string}3.cut命令对于TR和CUT命令都可以用管道直接级联使用:先给出例子如下:echo x.yy.x@x@s%a | tr "." " "|tr x y|cut -d @ -f 3|tr % " ">> s atmparray=(`echo x.yy.x@x@s%a | tr "." " "|tr x y|cut -d @ -f 3|tr % " "`)echo ${tmparray[*]}.原创 2021-11-18 14:38:21 · 1214 阅读 · 0 评论 -
shell/linux的sed/grep/pcregrep跨行匹配&替换
目录1.sed跨行匹配&替换1.1 sed跨行匹配1.2 跨行匹配+替换1.2.1 替换匹配多行中的某一行中数据1.2.2 替换满足匹配的多行为其他字符2.grep匹配多行3.pcregrep匹配多行1.sed跨行匹配&替换1.1 sed跨行匹配sed可以跨行匹配并替换,但是只能匹配开始行和一个结束行,无法包括匹配中间行如下一段文本:匹配包含000,222,111的三行vwef000verbweg111222verb...原创 2021-11-10 22:00:33 · 9941 阅读 · 0 评论 -
shell脚本多个命令存储在变量中,并可执行(eval)
shell脚本变量中可以存储命令,但是无法存储多个命令和包含管道处理的命令tmp="pwd;ls"echo $tmp>>pwd;ls$tmpbash: pwd;ls: command not found#如果有|则只执行第一个命令tmp="pwd|tee cmd.log"echo $tmp>>pwd|tee cmd.log$tmp>>bash: pwd|tee: command not found所以不能存储多个命令和管道命令。此时只原创 2021-12-17 20:48:56 · 475 阅读 · 0 评论 -
shell脚本实例(if/else,for,while,数值比较,字符比较,中括号/小括号/function)
下面的shell实例包含1. if/else2. for3. while4. 数值比较5. 字符比较6. 中括号7. 小括号8. function其中要求function调用在function定义之后#!/bin/bashif [ $# != 6 ] # [ $# -ne 6 ]then echo "please input xxxx" exit 0ficaseDate=$1runType=$2caseName=$3caseIdx=$原创 2021-11-12 16:10:07 · 423 阅读 · 0 评论