当前位置: 首页 > Linux

Linux基础学习笔记(四个搭建基础脚本)

时间:2023-04-06 05:42:18 Linux

Linux(学习笔记基于《Linux命令行与shell脚本编程大全》)11搭建基础脚本脚本运行环境为Centos7创建shell脚本shell脚本第一行用于指定shell要使用。格式是#!/bin/bash通常使用#作为shell脚本的注释(但第一行例外)创建一个脚本,内容如下(文件名以.sh结尾)#!/bin/bash/#测试datewho完成后直接运行脚本,使用命令bashfilename.sh直接运行脚本,得到如下结果:SunJun1720:52:35CST2018rootpts/02018-06-1720:49以上是一个简单的脚本显示消息大多数shell命令都会产生自己的输出,输出到控制台。很多时候我们想加上自己的文本信息告诉用户脚本在做什么,这就用到了shell命令echoecho可以用单引号或者双引号来划定文本字符串,类似于java/python的print,可以将上面的脚本更改为#!/bin/bash/#Scripttestecho"Thecurrenttimeis"dateecho"已经登录的用户有"谁可以看到结果:当前时间是MonJun1808:16:10CST2018已经登录的用户有rootpts/02018-06-1808:15在使用variable环境变量之前,我使用echo命令查看环境变量。同样,也可以在脚本中使用$+环境变量名来获取环境变量。修改脚本为#!/bin/bash/#Scripttestecho"Thecurrenttimeis"dateecho"登录用户有"whoechoUID:$UIDechoHOME:$HOME执行后输出如下:ThecurrenttimeisMonJun1808:36:09CST2018登录用户有rootpts/02018-06-1808:15rootpts/12018-06-1808:35UID:0HOME:/root只要环境变量在shell脚本中被引用,就会显示相应的环境变量。如果要显示$HOME这样的字符,使用前必须加转义符,否则会被shell翻译用户变量shell脚本允许在脚本中自定义变量,自定义变量允许在整个脚本中使用用户变量可以是任意由字母、数字或下划线组成的文本字符串,长度不超过20用户变量区分大小写,所以变量Var1和变量var1不同创建脚本内容如下:#!/bin/bash/var1=10var2=29var3=$var1echo'var1is$var1'echo'var2is$var2'echo'Thevalueofvar3isequaltovar1andthevalueis$var3'运行结果:var1的值为$var1Thevalueofvar2is$var2Thevalueofvar3isequaltovar1is$var3以上输出错误,我没有取到对应的值,这里引号是我的错字。echo中有变量调用的时候要用双引号,否则无法识别变量的值,或者上面的脚本不带引号可以修改为:#!/bin/bash/var1=10var2=29var3=$var1echo"Thevalueofvar1is$var1"echo"Thevalueofvar2is$var2"echo"Thevalueofvar3equaltovar1is$var3"执行结果:var1的值为10var2的值为value为29。var3的值等于var1,值为10。注意变量之间的赋值使用var3=$var1,而不是var3=var1,var3的值为字符串var1。命令替换命令替换就是替换一个命令脚本的输出被脚本中的一个变量替换。一般有两种方法:反引号`例子:var1=`date`$()例子var2=$(date)以上两种方法都是将日期输出的内容赋值给变量var1/2,注意赋值等号和命令之间没有空格写个脚本测试一下#!/bin/bash/var1=`date`var2=$(date)echo"今天的日期时间1是$var1"echo"Today'sdateandtime2is$var2"运行结果:Today'sdateandtime1isMonJun1810:53:39CST2018今天的dateandtime2isMonJun1810:53:39CST2018下面的脚本经常被用来按日期命名文件#!/bin/bash#将/usr/bin目录列表复制到日志文件today=$(date+%y%m%d)ls/usr/bin-al>log.$today第三行是将日期格式化成年月日的形式,将/usr/bin/目录下ls命令的输出输入到日志文件中。运行后会生成一个以date结尾的文件,用于输入重定向和输出输出重定向。最基本的重定向是将命令的输出发送到文件。bashshell使用大于号(>)最简单的执行命令date>todayputtoday将日期输出到today文件中。注意:如果当前目录下不存在today文件,则会创建today文件。如果today文件已经存在,today中的内容将被覆盖(无任何提示)。大于号>>用于向文件添加内容。输入重定向与输出重定向相反。输入重定向使用小于号<。符号的方向可以理解为数据流的方向。wc命令可以统计data数据中的文本。默认情况下下面会依次输出三个值,分别是:文本的行数,文本的字数,文本的字节数执行wc这里是输入数据内容>这也算>biaoji执行结果为2241pipeline管道命令格式command1|command2将命令1的输出作为命令2的输入rpm-qa|sort>rmp.list上面的命令是对安装包的信息进行排序,输入到rpm.list中(RedHat)管道命令为非常有用并且非常简单地执行数学运算expr命令expr1+5。加号两边都有空格。一般这东西用不到,也很难用。此命令是bashshell,以与另一个名为Bourne的shell兼容,因此不要使用它。使用方括号,使用$[operation]作为计算的首选。创建如下脚本#!/bin/bashvar1=100var2=50var3=45var4=$[$var1*($var2-$var3)]echo最终结果为$var4执行上面的脚本可以看到最终结果为500注意bashshell只支持整数运算和浮点数计算。常见的浮点数计算是使用bash自带的计算器使用命令bc进入计算器或者bc-q省略欢迎信息。bc可以指定结果的小数位数$bc-q3.44/50scale=43.44/5.6880quitbc也支持变量$bc-qvar1=10var1*440var2=var1/5printvar22quit可以在脚本中使用bc#!/bin/bashvar1=$(echo"scale=4;3.44/5"|bc)echo答案是$var1scriptbc+inlineinputredirection#!/bin/bashvar1=10.46var2=43.67var3=33.2var4=71var5=$(bc<