shell脚本设计
文章平均质量分 57
huangmr0610
简介
展开
-
shell获取脚本(子脚本)绝对路径的方法
在最外层脚本(记为a.sh)中,可以适用如下参数获取脚本路径:basepath=$(cd `dirname $0`; pwd)但是,如果脚本内source其他脚本(记为b.sh),b.sh脚本内通过上述命令获取的路径,就是父脚本的路径,而不是b.sh的路径了,可以在b.sh内通过如下方式获取b.sh的路径:bashpath=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)当然,第二种方法,完全可以用在父脚本、子脚本、孙脚本等各级中,并且获取到原创 2021-11-25 18:20:45 · 1641 阅读 · 0 评论 -
sed行处理详解(交换行,合并行,删除行等)
1.合并行zj@zj:~/Script/blog_script$ cat test11234合并上下两行zj@zj:~/Script/blog_script$ sed '$!N;s/\n/\t/' test11 23 4合并匹配模式及其下一行zj@zj:~/Script/blog_script$ sed '/2/{N;s/\n/\t/转载 2016-04-27 23:35:07 · 5754 阅读 · 0 评论 -
sed原理及sed命令格式 ,缓存区,模式空间
4.1 Sed工作原理 sed是一个非交互式的流编辑器。所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出;而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行。整个文件像流水一样被逐行处理然后逐行输出。转载 2016-04-28 14:40:21 · 5442 阅读 · 1 评论 -
sed交换任意两行
sed -n 'A{h;n;B!{:a;N;C!ba;x;H;n};x;H;x};p' 文件解释:A、B分别是需要交换的行,C是B-1思路:对于交换相邻的行sed -n 'A{h;n;x;H;x};p'对于交换不相邻的行sed -n 'A{h;n;:a;N;C!ba;x;H;n;x;H;x};p'对比发现::a;N;C!ba;x;H;n; 这个部分是多出来的,因转载 2016-04-27 17:25:47 · 6279 阅读 · 0 评论 -
shell脚本if判断语句报错[: too many arguments的两种原因
shell脚本,if判断语句报错[: too many arguments我遇到过两种情况:1、第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断时,无法知道该获取哪个值,例如:脚本ee.sh:strings1="hello world"strings2="hello world"if [ $strings1 = $st原创 2015-04-15 15:47:55 · 52910 阅读 · 0 评论 -
shell编程注意点
1、标准输入输出转存不能随便用,例如:echo "export PATH=/home/huangmr/jdk/bin:\$PATH" >> /home/huangmr/.bash_profile 1>>/home/huangmr/mysql_install.log 2>&1上面这句话本来是希望能够往/home/huangmr/.bash_profile文件中插入export PATH原创 2015-06-29 22:55:13 · 518 阅读 · 0 评论 -
shell数组处理
linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算。已经数据类型方面都是不能比较的。 下面是个人在使用时候,对它在数组方面一些操作进行的总结。 1.数组定义 [chengmo@centos5 ~]$ a=(1 2 3 4 5)[chengmo@centos5 ~]$ echo $a1 一对括号表示是数组,数组元素用“空格”符号分转载 2016-04-29 10:11:50 · 1542 阅读 · 0 评论 -
shell脚本中的一些特殊符号
在shell中常用的特殊符号罗列如下: # ; ;; . , / \\ 'string'| ! $ ${} $? $$ $* \"string\"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \\ + - %=转载 2015-04-14 16:46:41 · 1514 阅读 · 0 评论 -
shell参数扩展
参数扩展的表示形式为:${expression}。expression包括各种字符直到匹配上'}'。当出现以下情况时候'}'不会被检查来匹配:1)在转义字符\之后,如\{;2)在引号里面,如‘}’;3) 在算术表达式,命令替换或者变量扩展里面的,如${value}最简单的参数扩展形式如:${parameter}使用如下模式可以修改参数扩展: ${parameter:-[转载 2016-04-29 11:04:36 · 682 阅读 · 0 评论 -
Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
SHELL 编程 shell 是一个命令解释器,侦听用户指令、启动这些指令、将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言、利用它可以编写一些系统脚本。查看本机shell 信息: cat /etc/shells --查看本支持的shell echo $SHELL --查看当前支转载 2015-04-14 22:23:07 · 1353 阅读 · 0 评论 -
shell中$0,$?,$!等的特殊用法
变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" …转载 2016-04-12 18:05:10 · 567 阅读 · 0 评论 -
shell脚本中的EOF以及文件重定向
(内容) EOF 可以把EOF替换成其他东西(分解符) 意思是把内容当作标准输入传给程序这里再简要回顾一下符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个 分界符可以是你所定义的任何字符串。常用文件重定向:command > filename 把标准输出重定向到一个新文件中 command >> filen转载 2015-12-18 16:40:28 · 4815 阅读 · 0 评论 -
sed在行首或者行尾添加内容
用sed命令在行首或行尾添加字符的命令有以下几种:假设处理的文本为test.file在每行的头添加字符,比如"HEAD",命令如下:sed 's/^/HEAD&/g' test.file在每行的行尾添加字符,比如“TAIL”,命令如下:sed 's/$/&TAIL/g' test.file运行结果如下图:几点说明:1.转载 2016-01-18 17:46:40 · 29360 阅读 · 0 评论 -
shell判断文件,目录是否存在或者具有权限
shell判断文件,目录是否存在或者具有权限 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi转载 2015-04-14 18:04:35 · 3179 阅读 · 0 评论 -
Shell脚本之awk详解
一.基本介绍1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断3.工作原理:awk 会把每行进转载 2015-04-14 18:05:32 · 610 阅读 · 0 评论 -
shell中数字大小的比较
【整数之间的比较】示例脚本:#!/bin/bashif [ $1 -gt $2 ]then echo "参数$1大于参数$2"else echo "参数$1小于参数$2"fi数字判断一些命令:#-gt是大于#-lt是小于#-eq是等于#-ne是不等于#-ge是大于等于#le是小于等于 【小数及整数之前的比较】示例脚转载 2015-04-14 17:58:52 · 124069 阅读 · 1 评论 -
Linux执行.sh文件,提示No such file or directory的问题的解决方法
【问题】:在window平台下,写好shell脚本文件,迁移到linux平台,赋过可执行权限,执行该sh文件,却提示No such file or directory,ls 了下,确实有该文件。【原因】:是文件格式兼容性问题?用vim打开该sh文件,在命令模式下输入::set ff 回车,显示fileformat=dos【解决办法一】:重新设置下文件格式(在命转载 2015-04-14 16:37:36 · 13939 阅读 · 0 评论 -
shell awk读取文件中的指定行的指定字段
1.awk功能和实用形式awk指定读取文件中的某一行的某个字段awk 可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下awk ‘NR==m,NR==n {print $k}’ path/filenamem,n,k表示实在的数值。如果要用变量来表示m,n的值,则变量需要用单引号将其引起来。NR,{print }是awk命令转载 2015-05-06 18:43:39 · 32025 阅读 · 0 评论 -
shell 脚本中的入参获取与判断
1、获取shell脚本的入参个数:$#2、获取shell脚本的第n个入参的字符个数/字符串长度(注意这里的n需要替换为具体的数字,如果这个数字超过实际的入参个数,结果为0):${#n}原创 2015-04-15 14:52:31 · 3190 阅读 · 0 评论 -
shell条件嵌套(if条件语句)
【注意1】:和Java、PHP等语言不一样,sh的流程控制不可为空,如:代码如下:<?phpif (isset($_GET["q"])) { search(q);}else { //do nothing}?>在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else,就像这样: if condit转载 2015-04-14 23:01:35 · 69170 阅读 · 1 评论 -
shell脚本中的数组
以下命令,都是以数组array=("20150417" "20150416" "20150415")为例。注意bash中只支持一维数组,没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。【数组定义】:说明:数组元素的间隔符可以是空格,也可以是回车换行。例如:1、使用空格定义的:a原创 2015-04-17 10:58:37 · 3791 阅读 · 0 评论 -
Shell脚本之sed详解
在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。一、什么是sed? sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 二、sed的处理过程 sed编辑器逐行处理文件(或输入),并将结果发送到转载 2015-05-06 19:01:15 · 827 阅读 · 0 评论 -
shell脚本中的日期处理
Ps:这篇文章只是为了做个分类,以后有看到比较好的时间处理命令都会列在这里,您如果有什么好的时间处理命令,可以评论中添加,我会定期查看更新,谢谢!1、定义一个参数DATE_TODAY,用于记录当天时间:DATE_TODAY=`date -d +"now" +"%F"`假如今天是2015年4月15日,结果:2015-04-15DATE_TODAY=`date -d +"now"原创 2015-04-15 15:38:33 · 1495 阅读 · 0 评论