SHELL训练营--day5__shell脚本(1)
shell脚本意义
shell是一种脚本语言,具备计算机语言的基本特点:逻辑判断、循环、自定义函数等。
shell脚本 主要使用 linux系统的命令,来实现特定目的。
可用于自动化运维,提长运维效率。
shell脚本基本结构和运行方法
shell脚本名字以.sh为结尾,标明是一个shell脚本。但系统不是以后缀名区分文件。
shell脚本开头要标注bang shell,即指明运行的shell。如:#!/bin/bash
shell脚本解释行:以“#”开头。
执行方法:- 加执行权限,再运行脚本 。如:
chmod a+x 1.sh; ./1.sh
- 运行shell加脚本名称 参数。如:
bash 1.sh;
脚本运行过程查看:bash -x 1.sh
脚本语法检查:bash -n 1.sh
- 加执行权限,再运行脚本 。如:
时间命令date
在shell中,使用时间命令生成对应时间,或是格式化时间 ,以便于脚本 在需要时,得到确切时间。
时间格式:分为两种,一标以时间戳形式(秒)存在,另一种是时间格式存在,比较随意。
时间戳:date +%s
,转换时间戳为时间格式:date -d @1545661347
时间格式:date +%时间转换符
年:“+%Y” 四位数,“+%y” 两位数。
月:"+%m".
日:"+%d"
小时:"+%M"
分钟:"+%H"
秒:"+%S"
其它格式:"+%D"--12/24/18."+%F"--2018-12-24."+%T"--22:30:10.
周几:"+%w"。 本年中第几周:"+%W"。
时间格式聚合:如:date "+%Y-%m-%d %M:%H:%S"
时间计算:
一天前后:date -d "+1day" +%F;date -d "-1day" +%F
一月前:date -d "-1month"
. 分钟:“-1 min”等。变量定义
变量使用意义:缩写字符串,定义特定属性,特定值,定义特定命令结果等。
变量的作用域:条件语句,只在语句范围,如IF语句。
变量定义特定值:PI=3.14
变量定义命令结果:如m= wc -l 1.txt
变量定义特定属性,如用户交互:read -p "input a num:" n; echo $n
环境变量,预定义环境变量等 。
位置变量: 脚本 传递参数等。如$0
表示脚本 ,$n
表示第n个参数。$#
表示参数个数
数字运算:a=1;b=2;c=$(($a+$b))
,或$[$a+$b]
逻辑判断if
if语句常和test判断条件一起,进行逻辑判断。
if语句格式:- if test ; then 语句; fi
- if test ; then 语句; else 语句 ; fi
- if test; then 语句; elif test ; else 语句; fi
test判断条件分为:
- 数值判断
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
因为“>,<”号已经被 输入输出重定向占用了,所以数值判断 符号不能使用它们。
- 数值判断
- 字符串判断
= 字符串相等为真
!= 字符串不相等为真
-z 字符串 字符串长度为零则为真
-n 字符串 字符串长度不为零则为真 - 文件对象判断
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真 - 逻辑条件组合判断
shell 也提供了 与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。
转载于:https://blog.51cto.com/sincethen/2334834
相关文章:

让程序主窗口不显示在任务栏中
// 这样一句就能搞定了 在Form创建是调用 procedure TfrmWaitWindow.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); end; 相关方法1 Application.Initialize; Application.CreateForm(TForm1, Form1); Application.S…

查缺补漏 | Python控制结构
1. if 表达式的简介写法 x if E else y 意思是如果条件表达式E成立,执行x,否则执行y 等价于 if E:x else:y 2. Python的while循环和其他语言相似(只是少了大括号),但是for循环区别大很多 for iter_var in iterable_object: sui…

Android学习——R文件丢失异常原因汇总
Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常,造成这个异常的原因可能非常微小,但是给Android开发者们造成的麻烦可是巨大的,当程序员们费尽千…

举个栗子看如何做MySQL 内核深度优化
2019独角兽企业重金招聘Python工程师标准>>> 本文由云社区发表 作者介绍:简怀兵,腾讯云数据库高级工程师,负责腾讯云CDB内核及基础设施建设;先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾…

Ubuntu--开启TELNET服务
1 sudo apt-get install xinetd telnetd 安装成功后,系统也会有相应提示, 测试安装完之后就可以Telnet,要是还不行继续 2 sudo vi /etc/inetd.conf 并加入以下一行 telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd …

Python的range()函数
如果想产生一个等差数列,用range()函数再合适不过。 range()函数可以有起始值、终值、步长三个参数。 range(start 0,end,step 1) 但是起始值和步长是可以缺省的。起始值的缺省值是0,步长的缺省值是1。 起始值被包含,终值不包含。 为了方…

C++链式继承
继承,对于学习C的每一个人来说,都不会陌生。在Qt的开发中,如果你需要对一个无边框的界面支持move操作,那么你就得通过继承重写虚函数来实现,这并不难,但如果我还需要对一个按钮支持移动,一般情况…

调度框架学习笔记(3)—— 集群调度框架的架构演进过程
本章是 The evolution of cluster scheduler architectures 文章的学习笔记。这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展。 首先介绍一下这篇文章的作者:Malte Schwarzkopf,他目前在 MIT 的 PDOS实验室 作博士后,说起作者…

查缺补漏 | Python自定义函数
1 默认参数要放在自定义函数参数列表的最后,也就是说下面的定义是不允许的 2 调用函数时熟悉的是位置参数,但是也可以用关键字参数,也就是调用时把参数名写出来(可以通过它来改变参数的顺序)。不过貌似系统定义的函数不能用关键字参数&#x…

ZBar与ZXing使用后感觉
[原]ZBar与ZXing使用后感觉(上) 2014-3-18阅读2011 评论1 最近对二维码比较感兴趣,还是那句老话,那么我就对比了一下zxing和zbar 如果对于这两个的背景不了解的话,可以看我以前的文章,介绍了几个比较基础的…

X-UA-Compatible
X-UA-Compatible是IE8的一个专有<meta>属性,它告诉IE8采用何种IE版本去渲染网页,在html的<head>标签中使用。可以在微软官方文档获取更多介绍。 在IE8刚推出的时候,很多网页由于重构的问题,无法适应较高级的浏览器&a…

[转]【 视频 】PAR、DAR和SAR都是啥
原地址:http://blog.yikuyiku.com/?cat3 PAR —— Pixel Aspect Ratio 像素纵横比DAR —— Display Aspect Ratio 显示纵横比SAR —— Sample Aspect Ratio 采样纵横比 16:9和4:3指的是DAR,DAR和SAR之间没有必然联系。横向上的像素数目/纵向…

登高自卑 | 我的NumPy笔记
注:以下内容来自NumPy中文网 1 NumPy的矢量化和广播两个特征是大部分功能的基础。 矢量化让代码更接近标准的数学符号,更Pythonic,隐藏了所有的显示循环(幕后是C在做显示循环)。 广播即操作的隐式逐元素行为,不仅仅局限于算数运…

TI IPNC Web网页之网页修改教程
web网页程序修改 打开gStudio之后,点击菜单栏中Help->Contents。先把这个诡异的编程语言看一遍吧。这里搬一些东西出来。 GoDB简介 从第一副图片中,我们可以看出,从源文件到可执行文件的过程。 从第二幅图我们可以了解到GoDB是如何跨平台的…

Spring Cloud构建分布式电子商务平台:服务消费(基础)
使用LoadBalancerClient在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,Spring Cloud做这一层抽象&#x…

OPENGL ES 对象的拾取
时间:19:51 2010-12-14 用户问题的说明 响应鼠标操作,其当中有一个非常重要的知识:使用鼠标点取,达到对三维模型对象的捕捉。 对象的拾取,这是3D当中的一个专业术语。也就是在二维屏幕当中选择三维对象。 我们要使用之…

如何禁止NumPy自动跳过数组的中心部分并仅打印角点
import numpy as np import sys np.set_printoptions(thresholdsys.maxsize)

用C#创建Windows服务(Windows Services)
转载自 hyslove最终编辑 hysloveWindows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称。用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Windows服务并使用它。这个服务在启动和停止时,向一…

JS判断滚动条到底部
form:http://www.uphtm.com/js/269.html判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。 scrollTop为滚动条在Y轴上的滚动距离。 clientHeight为内容可视区域的高度。 scrollHeight为内容可视区域的高度加上溢出…

docker容器网络 - 同一个host下的容器间通信
2019独角兽企业重金招聘Python工程师标准>>> 对于复杂的应用,不可避免需要多个服务部署在多个容器中,并且服务间存在相互间通信的情况。比如服务A需要连接mysql的容器。本文将介绍docker的容器网络,并通过实践解决在同一个docker …

登高自卑 | 我的PyTorch入门与实践笔记
1 函数名后带下划线会修改函数本身。如y.add_(x)会改变张量y。 2 PyTorch的Tensor和NumPy中的ndarray是可以互相转换的,转换后的对象共享内存(一个变另一个也跟着变)。

234. Palindrome Linked List - Easy
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false Example 2: Input: 1->2->2->1 Output: true Follow up:Could you do it in O(n) time and O(1) space? 找中点,反转后半部分,再一一…

Hibernate 获取某个表全部记录时 奇怪现象 (重复出现某个记录)
我用Hibernate连接access的mdb 列出某个表全部记录的时候,发现有一个记录重复了。而直接用jdbc连接,就可以正确列出来。 本来还以为mdb不稳定,还吓了我一跳。毕竟打算用它作为长久数据库嘛~~ 分析了一下,发现正好重复的数据的主键…

iOS7导航栏和状态栏的定制
http://www.cocoachina.com/applenews/devnews/2013/1104/7287.html 转载于:https://www.cnblogs.com/luningning0901/p/4437190.html

2021年浙软夏令营预推免面经
夏令营 时间:七月中旬 参加人工智能分营,为期两周,评分标准:简历上课参与情况项目完成情况(具体占比不明)。 项目是完成三个深度学习模型,系统根据测试用例的通过情况评分。 预推免 时间:九月下旬 评…

ext前后台数据传输的标准化
一、标准化的数据传输是什么 这里所说的标准化主要是指,使用代理提交数据时,格式必须统一化、标准化,而服务器返回的数据格式也必须是标准化的数据。 简言之,使用代理提交数据时,前台--->后台,后台---&g…

对称加密解密类c#
namespace EncryptDLL{ #region 对称加密类 /// <summary> /// 对称加密解密类 /// </summary> public static class SymmetricEncryptClass { #region 对称加密代码 /// <summary> /// 对称加密方法 /// <…

java代码完全手写模仿qq登录界面
这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片。 结果截图如下所示: import java.awt.BorderLayout;import java.awt.Color;import java.awt.F…

Vue3 计算属性的特性
computed:里面的方法 仅当依赖的值发生变动时,才会重新进行计算 这样一来解决的是性能问题 而methods里面的方法,哪怕无关值发生变动,也会重新进行计算 下面是两组对比 1-通过distance()计算属性来计算路程 2-通过getDis()方法计算路程…

解读源码中的问题
1.HashMap 构建中如何保证容量为 2 的幂次方 static final int tableSizeFor(int cap) {int n cap - 1;n | n >>> 1;n | n >>> 2;n | n >>> 4;n | n >>> 8;n | n >>> 16;return (n < 0) ? 1 : (n > MAXIMUM_CAPACITY) ?…