linux下shell脚本论文,Linux下Shell脚本编程

1、 shell脚本是什么

它是一种脚本语言,并非编程语言。

可以使用一些逻辑判断、循环等语法。

可以自定义子函数,是系统命令的集合。

shell脚本可以实现自动化运维,大大增加我们的工作效率。

2、shell脚本结构以及执行方法

开头行指定bash路径: #! /bin/bash

以#开头的行作为解释说明

#注释自己的脚本内容,方便自己查阅;utf8字符集,支持中文;

脚本的名字以.sh结尾,用于区分这是一个shell脚本

执行脚本方式有两种:

chmod a+x 1.sh    添加x执行权限;

./1.sh 可以直接执行,或者写绝对路径/root/shell/1.sh

如果没有执行权限可以 bash 1.sh    或 sh 1.sh

bash -x 1.sh 可以查看脚本执行过程

实验练习:

1234 [root@localhost shell]# cat 1.sh

#!/bin/bash

#这是我的第一个脚本

echo "hello world"

[root@localhost shell]# ls -l

-rw-r--r-- 1 root root 60 6月  16 19:28 1.sh

[root@localhost shell]# chmod a+x 1.sh

[root@localhost shell]# ls -l

-rwxr-xr-x 1 root root 60 6月  16 19:28 1.sh

[root@localhost shell]# ./1.sh

hello world

[root@localhost shell]# /root/shell/1.sh

hello world

[root@localhost shell]# /bin/sh 1.sh

hello world

[root@localhost shell]# bash -x 1.sh

+ echo 'hello world'

hello world

执行bash和sh是一样的,sh是bash的软连接文件;

[root@localhost ~]# ls -l /bin/bash

-rwxr-xr-x. 1 root root 871700 10月 16 2014 /bin/bash

[root@localhost ~]# ls -l /bin/sh

lrwxrwxrwx. 1 root root 4 3月  4 00:59 /bin/sh -> bash

3、学会date命令的用法

date  +%Y-%m-%d    date +%y-%m-%d 年月日

date  +%Y-%m-%d = date +%F 年月日

date  +%H:%M:%S = date +%T 时间

date +%s  时间戳

date -d @1434248742    根据时间戳算出当前时间

date -d "+1day" 一天后    date -d "-1day" 一天前

date -d  "-1month" 一月前

date -d  “-1min” 一分钟前

date +%w    date +%W 星期

实验练习:

[root@localhost shell]# date +%y

15

[root@localhost shell]# date +%Y

2015

[root@localhost shell]# date +%m

06

[root@localhost shell]# date +%d

16

[root@localhost shell]# date +%H

14

[root@localhost shell]# date +%M

01

[root@localhost shell]# date +%S

54

从1970年 01月01日0点0分开始算起到现在多少秒;

[root@localhost shell]# date +%s

1434434874

[root@localhost shell]# date -d @1434434874

2015年 06月 16日 星期二 14:07:54 CST

CST是中国时间 +8小时

[root@yonglinux shell]# date -d @0

1970年 01月 01日 星期四 08:00:00 CST

[root@localhost shell]# date +%F

2015-06-16

[root@localhost shell]# date +%T

14:04:17

[root@localhost shell]# date +%Y-%m-%d

2015-06-16

[root@localhost shell]# date +"%Y-%m-%d %H:%M:%S"

2015-06-16 14:05:13

[root@localhost shell]# date +"%F %T"

2015-06-16 14:05:38

周二

12 [root@localhost shell]# date +%w

2

今年的第多少周,24周

[root@localhost shell]# date +%W

24

全年有多少周,52周;

[root@localhost shell]# echo "365/7" | bc

52

[root@localhost shell]# date -d "-1 day"

2015年 06月 15日 星期一 14:16:31 CST

[root@localhost shell]# date -d "-1 day" +"%F %T"

2015-06-15 14:19:13

[root@localhost shell]# date -d "+1 day" +"%F %T"

2015-06-17 14:19:22

[root@localhost shell]# date -d "+1 month" +"%F %T"

2015-07-16 14:19:31

[root@localhost shell]# date -d "+1 year" +"%F %T"

2016-06-16 14:19:39

[root@localhost shell]# date -d "+1 week" +"%F %T"

2015-06-23 14:19:45

[root@localhost shell]# date -d "-10 hour" +"%F %T"

2015-06-16 04:19:59

[root@localhost shell]# date -d "-10 min" +"%F %T"

2015-06-16 14:10:15

[root@localhost shell]# date -d "-10 sec" +"%F %T"

2015-06-16 14:20:14

4、shell脚本中的变量

当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替。

使用条件语句时,常常使用变量    if [ $a -gt 1 ]; then ... ; fi

引用某个命令的结果时,用变量替代  n=`wc -l 1.txt`

写和用户交互的脚本时,变量也是必不可少的  read -p "Input a number: " n; echo $n

如果没写这个n,可以直接使用$REPLY

内置变量 $0, $1, $2,$#    $0表示脚本本身,$1 第一个参数,$2 第二个参数,$#表示参数的个数;

数学运算a=1;b=2; c=$(($a+$b))  或者 c=$[$a+$b]

实验练习:

引用某个命令的结果,使用变量代替

[root@localhost shell]# file=`which yum`

[root@localhost shell]# echo $file

/usr/bin/yum

[root@localhost shell]# rpm -qf $file

yum-3.2.29-60.el6.CentOS.noarch

变量只在当前shell下生效,子shell不会生效;

要想子shell也生效,使用export file 声明变量;

用户交互的变量:

[root@localhost shell]# cat 2.sh

#!/bin/bash

#与用户交互的变量

read -p "请输入一个数字:" num

echo $num

[root@localhost shell]# sh 2.sh

请输入一个数字:333

333

参数的变量:

[root@localhost shell]# cat 3.sh

#!/bin/bash

#关于参数的变量

echo "\$1=$1"

echo "\$2=$2"

echo "\$3=$3"

echo "\$#=$#"

echo "\$0=$0"

[root@localhost shell]# sh 3.sh ABC linux world

$1=ABC

$2=linux

$3=world

$#=3

$0=3.sh

数值变量:

12345678910 [root@localhost shell]# a=1;b=2

[root@localhost shell]# c=$a+$b

[root@localhost shell]# echo $c

1+2

[root@localhost shell]# c=$[$a+$b]

[root@localhost shell]# echo $c

3

[root@localhost shell]# c=$(($a+$b))

[root@localhost shell]# echo $c

3

5、shell中的逻辑判断

格式1:if 条件 ; then 语句; fi

格式2:if 条件; then 语句; else 语句; fi

格式3:if …; then … ;elif …; then …; else …; fi

逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等;注意到处都是空格。

可以使用 &&并且 || 或者 结合多个条件

大于>gt    (greater than)

小于< lt    (less than)

大于等于 >= ge

小于等于 <=  le

等于    ==eq    (equal)

不等于  != ne

实验练习:

[root@localhost shell]# cat if.sh

#!/bin/bash

#if判断语句,条件为真,打印true;

if :

then

echo true

fi

[root@localhost shell]# sh if.sh

true

if判断语句2;

[root@localhost shell]# cat if2.sh

#!/bin/bash

#if判断语句,条件为真,返回true;

if [ 1 == 1 ]

then

echo "true"

fi

[root@localhost shell]# sh -x if2.sh

+ '[' 1 == 1 ']'

+ echo true

true

[root@localhost shell]# sh if2.sh

true

if判断语句3;

[root@localhost shell]# cat if3.sh

#!/bin/bash

#if判断语句,条件为真返回true,条件为假,返回false;

if [ "1" == "2" ]

then

echo "true"

else

echo "false"

fi

[root@localhost shell]# sh if3.sh

false

变量,进行比较

[root@localhost shell]# cat if4.sh

#!/bin/bash

#if判断语句,变量进行比较;

a=1

if [ "$a" == "2" ]

then

echo "true"

else

echo "false"

fi

[root@localhost shell]# sh -x if4.sh

+ a=1

+ '[' 1 == 2 ']'

+ echo false

false

多个判断要加elif

[root@localhost shell]# cat if5.sh

#!/bin/bash

#if判断语句,多个判断使用elif;

a=1

if [ "$a" == "2" ]

then

echo "true"

elif [ "$a" -lt 10 ]

then

echo "no false"

else

echo "false"

fi

[root@localhost shell]# sh if5.sh

no false

[ $a -lt 3 ] 也可以这样代替 (($a<3));使用方括号请一定注意空格;

1234 [root@localhost shell]# a=1;if(($a<3)); then echo OK;fi

OK

[root@localhost shell]# a=1;if [ $a -lt 3 ]; then echo OK;fi

OK

&& 并且  前面的执行成功后才执行后面的;

|| 或者  前面的执行不成功执行后面的;

12345 [root@localhost shell]# a=5

[root@localhost shell]# if [ $a -lt 10 ]&&[ $a -gt 2 ];then echo OK;fi

OK

[root@localhost shell]# if [ $a -lt 10 ]||[ $a -gt 2 ];then echo OK;fi

OK

奇数偶数判断,输入的数字除以2,余数为0为偶数,非0为奇数;

[root@yonglinux shell]# cat 4.sh

#!/bin/bash

read -p "enter a number:" n

n1=$[$n%2]

if [ $n1 -eq 0 ]

then

echo "你输入的数字是偶数"

else

echo "你输入的数字是奇数"

fi

[root@yonglinux shell]# sh 4.sh

enter a number:23

你输入的数字是奇数

[root@yonglinux shell]# sh 4.sh

enter a number:90

你输入的数字是偶数

判断输入的是否是数字,不是数字的直接退出;数字的话判断奇数或偶数;

`echo $n|grep -c '[^0-9]'`    匹配输入的字符为非数字的行数,如果为1说明不是数字。

[root@localhost shell]# cat 5.sh

#!/bin/bash

#判断输入的是否是数字,不是数字的直接退出;数字的话判断是奇数或偶数;

read -p "请输入一个数字:" n

n2=`echo $n|grep -c '[^0-9]'`

if [ $n2 -eq 1 ]

then

echo "你输入的不是纯数字,请重新输入"

exit 1

fi

n1=$[$n%2]

if [ $n1 -eq 0 ]

then

echo "你输入的数字是偶数"

else

echo "你输入的数字是奇数"

fi

[root@localhost shell]# sh 5.sh

请输入一个数字:abc

你输入的不是纯数字,请重新输入

[root@localhost shell]# sh 5.sh

请输入一个数字:323

你输入的数字是奇数

6、if 判断文件、目录属性

[ -f file ]判断是否是普通文件,且存在

[ -d file ] 判断是否是目录,且存在

[ -e file ] 判断文件或目录是否存在

[ -r file ] 判断文件是否可读

[ -w file ] 判断文件是否可写

[ -x file ] 判断文件是否可执行

实验练习:

1.sh存在的话执行后面的

[root@localhost shell]# [ -f 1.sh ] && echo "1.sh exist"

1.sh exist

21.sh不存在执行后面的。

12 [root@localhost shell]# [ -f 21.sh ] || echo "1.sh not exist"

1.sh not exist

判断文件是否存在

[root@localhost shell]# cat test.sh

#!/bin/bash

#判断1.sh是否存在;

if [ -e 1.sh ]

then

echo "1.sh exist"

else

echo "1.sh not exist"

fi

[root@localhost shell]# sh test.sh

1.sh exist

exec的用法,结合date变量实验

exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。

[root@localhost shell]# cat date.sh

#!/bin/bash

#exec的用法,结合date变量实验;

d=`date +%F`

exec >/tmp/$d.log 2>&1

echo "Begin at `date`"

ls /tmp/abc

cd /ddd

echo "End at `date`"

[root@localhost shell]# sh date.sh

[root@localhost shell]# cat /tmp/2015-06-16.log

Begin at 2015年 06月 16日 星期二 16:49:54 CST

ls: 无法访问/tmp/abc: 没有那个文件或目录

date.sh: line 7: cd: /ddd: 没有那个文件或目录

End at 2015年 06月 16日 星期二 16:49:54 CST

exec >/tmp/$d.log 2>&1  表示执行下面的行,输出正确或错误的信息都写到/tmp/目录下 日期.log里面;

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重构 pdf_三维温度场的重构方法,更准确地监测储能系统的电池堆内部温度

储能系统是微电网的核心组成部分&#xff0c;其热管理对于微电网的安全与稳定具有重要意义。相对于表面温度&#xff0c;电池堆内部温度场更有意义。针对红外热像仪无法监测电池堆内部温度场的问题&#xff0c;浙江工业大学分布式能源与微网研究所、浙江工业大学机械工程学院的…

linux找不到光口,以太坊查看命令_求助 输入ifconfig命令 后看不到eth0但是有eth3和eth4-CSDN论坛_区块链百科...

Ⅰ 怎么查看 /etc/sysconfig/network-scripts/ifcfg-eth0在你的这串英文前面加个 cat 空格就行Ⅱ 在linux下如何通过命令查网卡配置在linux下通过命令查网卡配置的方法如下&#xff1a;1、首先在电脑上打开Linux系统&#xff0c;然后进入Linux系统的终端窗口。Ⅲ 为什么用命令e…

开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...

随着 AI 技术的日益成熟&#xff0c;越来越多的传统企业都希望用 AI 能力升级原有的管理系统&#xff0c;进而智能化解决业务问题、提高人效。尤其在安全生产领域中&#xff0c;虽然视频监控的覆盖率逐年提升&#xff0c;但大多企业还在沿用人工抽检的方式对设备、区域、人员进…

pla3d打印材料密度_口腔修复体制作用3D打印金属粉末的成型工艺与性能控制要点概述...

在传统口腔修复体的制作过程中&#xff0c;制作工艺繁琐&#xff0c;制作周期长&#xff0c;加工过程中依赖人力操作&#xff0c;金属材料在制作过程中易发生变形&#xff0c;难以控制尺寸精度&#xff0c;使患者舒适度下降。而采用3D打印技术生产的修复体可根据患者自身进行定…

linux semaphore,在CentOS 7操作系统上安装Semaphore的方法

本文介绍在CentOS 7操作系统上安装Semaphore的方法&#xff0c;安装完后就可以使用Semaphore来管理Ansible Web UI了。一、安装MariaDB数据库和git 2.x参考文章1、安装MariaDB数据库参考文章2、安装git 2.x确认git版本&#xff1a;$ git --versiongit version 2.16.5二、安装An…

android 绕过root检测,公主连结怎么绕过root检测 绕过root检测方法一览

公主连结刷初始怎么绕过root检测呢?很多小伙伴想刷初始可是经常被root检测,有没有什么办法才能绕过检测呢?实机可以用magisk自带的hide功能&#xff0c;xposed框架可以选择rootcloak&#xff0c;ANRC在x86半残废可能能用&#xff0c;Android版只是检测su二进制文件是否存在&a…

鸿蒙后的时期有什么,鸿蒙系统什么时候上市 华为鸿蒙系统有多厉害?

由于谷歌停止与华为的部分合作&#xff0c;华为的绝密武器“鸿蒙系统”也随之曝光。按照余承东的说法&#xff0c;早在七年之前鸿蒙系统已经开始研发&#xff0c;时至今日鸿蒙系统终于有机会上市&#xff0c;成为华为的新操作系统。鸿蒙系统被誉为备胎计划&#xff0c;此系统就…

android确认密码代码,Android自定义View实现验证码or密码输入框

前言最近项目中有支付功能&#xff0c;用户输入密码时要类似微信支付密码输入框的样式&#xff0c;本想直接copy网上的&#xff0c;但设计姐姐总是对样式挑三拣四&#xff0c;抽空自己自定义了一个&#xff0c;无奈之下抽空自定义了个&#xff0c;并把它贴到GitHub上供网友们参…

华为鸿蒙再次公测,华为鸿蒙开启第二轮公测,新增7款机型,有你的吗?

原标题&#xff1a;华为鸿蒙开启第二轮公测&#xff0c;新增7款机型&#xff0c;有你的吗&#xff1f;华为鸿蒙操作系统&#xff0c;相信这是很多人都非常期待的操作系统&#xff0c;这个操作系统经过各方评测之后&#xff0c;得到的反馈都要远比华为此前所搭载的基于安卓开发的…

同行不支持鸿蒙系统,鸿蒙系统虽好,但也需要国内同行支持

原标题&#xff1a;鸿蒙系统虽好&#xff0c;但也需要国内同行支持鸿蒙系统将在不久正式推出&#xff0c;但是鸿蒙系统虽好&#xff0c;但也离不开国内同行的支持。鸿蒙系统的细节透露后&#xff0c;被广大数码爱好者所重视。作为一款不同于苹果IOS以及安卓系统外的其他手机系统…

linux主机开放ftp、http服务_Linux系统与Windows系统哪个好呢(一)

当Windows与Linux作为VPS云主机操作系统的对比时&#xff0c;需要专注于小企业主最相关的因素&#xff0c;一个明显的赢家出现了&#xff0c;现在我们来看看吧。Linux与Windows的比较&#xff1a;任何虚拟主机操作系统都应该快速且稳定&#xff0c;但当企业选择VPS主机时&#…

国内厂商对鸿蒙系统的态度,鸿蒙系统4月上线,国内手机厂商态度很关键!小米、中兴出乎意料...

前段时间&#xff0c;华为举行了新品发布会&#xff0c;在这个发布会上&#xff0c;华为宣布了两件事情&#xff0c;第一就是华为全新的折叠屏手机Mate X2正式亮相了&#xff0c;而第二件事情更加让人惊喜&#xff0c;余承东已经确认&#xff0c;华为的鸿蒙系统将会在4月份上线…

用linq查询html中div个数,C#使用Linq to XML进行XPath查询

最近在用到HtmlAgliltyPack进行结点查询时&#xff0c;发现这里选择结点使用的是XPath。所以这里总结一下在C#中使用XPath查询XML的方式。习惯了用Linq&#xff0c;这里也是用的Linq to xml的。Linq To XML的核心类是XDocument和XElement、XAttribute&#xff0c;下面简单介绍一…

学编导还是学计算机,高二学编导烧钱吗

高二学编导烧钱吗2019-09-22 10:34:23文/马妍高二学编导还是很费钱的。艺术专业的学习普遍都很贵&#xff0c;学编导总体需要3-6万元左右。一般培训班要两到三万&#xff0c;还需要购买一些专业的设备&#xff0c;费用也不低。编导专业简介编导有广义和狭义之分&#xff0c;狭义…

用计算机录制一段30,测评!电脑录屏软件哪个好用?小白进阶第1阶段

原标题&#xff1a;测评&#xff01;电脑录屏软件哪个好用&#xff1f;小白进阶第1阶段电脑录屏软件哪个好用&#xff1f;最近短视频越来越火&#xff0c;小卓发现身边不少人都在捣鼓视频&#xff0c;有拍摄的有录屏的比比皆是。问了一下&#xff0c;大多是对此感兴趣的&#x…

java word 转换 图片_怎样把手机上的图片转换成word?

在当今这个快速发展的时代&#xff0c;人手一部手机是件很正常的事&#xff0c;小编的手机上往往会存有许多喜欢的文字图片&#xff0c;可是那么多的图片又会占用很多手机的空间&#xff0c;这样就有些不好了。庆幸的是最近小编学习到一个可以将手机上的图片转化成文字的技巧&a…

uic计算机科学与技术,北京师范大学-香港浸会大学联合国际学院UIC理工科技学部高招网...

马真真计算机科学与技术专业,现于美国南加州大学攻读硕士学位想想当初报考UIC的时候是冲着网上一个学长说的“如果你想要学习&#xff0c;那么来UIC绝对不会后悔”&#xff0c;现在毕业了&#xff0c;发现&#xff0c;确实如此。四年&#xff0c;学习了方方面面的知识&#xff…

应付账款账龄分析模板_6万字长文剖析宁德时代(三):财务分析

本文为《6万字长文剖析宁德时代》的第三篇。本文来自微信公众号&#xff1a; 凯昇资本(ID&#xff1a;gh_9c57a4031683)&#xff0c;头图来自&#xff1a;视觉中国在《6万字长文剖析宁德时代(一)&#xff1a;核心技术》和《6万字长文剖析宁德时代(二)&#xff1a;市场分析》中我…

开发db文件_Swoole高效跟传统的web开发有什么区别?life

一、swoole的运行模式Swoole高效跟传统的web开发有什么区别&#xff0c;除了传统的LAMP/LNMP同步开发模式&#xff0c;swoole的异步开发模式是怎么样的。我的官方群点击此处。获取更多的swoole学习资料以及视频源码笔记。程序猿的生活&#xff1a;面试12家公司&#xff0c;收获…

计算机设备操作与讲解,计算机组成与操作系统简介

计算机的五大组成部分控制器、运算器、存储器、输入设备、输出设备控制器&#xff1a;是计算机的指挥系统&#xff0c;负责控制计算机其他硬件的工作运算器&#xff1a;负责数学运算与逻辑运算控制器运算器CPU》人的大脑存储器内存优点&#xff1a;存取速度快缺点&#xff1a;断…