shell编程基础
1. 程序的执行风格
程序编程风格:
过去式:以指令为中心,数据服务于指令。
对象式:以数据为中心,指令服务于数据。
过程式编程有以下特点:
1) 顺序执行:指程序在执行的过程中,命令会从上至下依次执行,上面的指令不成功,也会执行下面程序。
2)选择执行:指在过去式编程中,会有以下判断语句,只有满足了该条件,才会执行判断语句中的程序。
3)循环执行:指在循环语句中,也会有循环调价,在满足条件的时候,程序会一直在循环语句中循环执行。
2.编程语言分类:
3.过去式编程的linux中的基本格式:
1)第一行必须要有#!/bin/bash、#!/bin/python等解释器,在系统执行该程序的第一时间会议看开头第一行,如果没有,比如当前是在bash下,会直接用bash执行该程序,如果不是用bash的格式写的程序,会出现错误
2)版本信息
3)日期
4)创建人
5)邮箱等信息,
除了第一条,其他的信息,可有可无
4.变量
变量的命令规则:
1)不能使用程序中的保留字
2)只能使用数字、字母及下划线,数字不能开头
3)见名知义
4)统一命名规则:驼峰命名法(单词首字母大写)
几种变量的生效范围:
本地变量:生效范围为当前shell程序,对其他shell不会生效
环境变量:生效范围为当前shell程序,对其子shell也会生效
局部变量:生效范围为某段特定的代码,一般在函数中
位置变量:$1,$2..等等,1代表传过来的第一个参数,以此类推
特殊变量:$?:代表返回上一条命令的执行结果,若为0,则为真,若非0则为假。$*:代表传递给脚本所有参数,全部合为一个字符串。$@:传递给所有参数,每个参数为单独的一个字符串。$#:传递给脚本的参数个数
5.逻辑运算
与:真与真=真、真与假=假、假与真=假、假与假=假 全为真,才为真
或:真与真=真、真与假=真、假与真=真、真与假=假 全为假,才为假
非:! 取反值,如果为真,结果就是假,,若果为假,结果就为真
短路与:
第一个为假,结果必定为假,不在执行第二个程序
第一个为真,第二个需要运算,若为真才为真,若为假,结果为假
短路或:
第一个为真,则结果必定为真,不在执行第二个程序
第一个为假,则需要运算第二个程序,若为真,结果为真,若为假,结果为假
异或:异或的两个值,相同为假,不同为真
6.条件测试
判断是否满足条件:若为真,返回0。若为假,返回1
测试命令:
test 条件
[root@centos7 ~]# test 10 -eq 9 && eecho "真" || echo "假"
判断10是否等于9
[ 条件 ] 其中 " [ " 号为内部命令,必须与" ] "成对出现,中间跟判断条件
[root@centos7 ~]# [ 10 -eq 9 ]&& eecho "真" || echo "假"
[[ 条件 ]] 条件可以是正则表达式
[root@centos7 ~]# [[ "root" =~ r.*t ]] && echo "zhen" ||echo "jia"
数值比较
-gt:是否大于
-ge:是否大于等于
-eq:是否等于
-ne:是否不等于
-lt:是否小于
-le:是否小于等于
字符串比较
==:是否等于
' > ': ascii码是否大于,此处的单引号为转译为 >
<:是否小于
!=:是否不等于
=~:左侧字符串是否匹配右侧,一般右侧为扩展正则表达式
-z:是否为空,空为真,不空为假
-n:是否不为空,空为假,不空为真
文件存在性测试
-e:文件存在性测试,存在为真,否则为假
-a:同e
文件存在性及类别
-b:是否存在且为块设备文件
-c:是否存在且为字符设备文件
-d:是否存在且为目录文件
-f:是否存在且为普通文件
-h或-L:是否存在且为符号连接文件
-p:是否存在且为管道文件
-S:是否存在且为套接字文件
文件权限测试
-r:是否存在且可读
-w:是否存在且可写
-x:是否存在且可执行
文件特殊权限测试
-u:是否存在且拥有suid
-g:是否存在且拥有gid
-k:是否存在且拥有kticky
文件大小测试
-s:是否存在且为空
文件是否打开
-t:是否已经打开,且跟某个终端有关
-N:文件自上一次被读取之后是否被修改过
-O:为当前有效用户是否为文件属主
-G:当前有效用户是否为文件属组
双目测试(两个文件是否为一个)
file1 -ef file2 查看两个文件是否是一个inode号
file1 -nt file2 file1的mtime新与file2则为真,否则为假
file1 -ot file2 file1的mtime旧与file2则为真,否则为假
7.第一个hello world的shell脚本
转载于:https://blog.51cto.com/10492754/2065707
相关文章:

【Qt】QImage使用总结
图像格式转换 由 RGB 格式转换成 BGR 格式 QImage::rgbSwapped() 返回一个QImage,其中所有像素的红色和蓝色组件的值被交换,有效地将RGB图像转换为BGR图像。 QImage image(fileName); QImage bgr = image.rgbSwapped();将彩色图转换成 灰度图 使用QImage::convertToForma…

访问量最高超7百万的Stack Overflow问题竟然是...
整理 | Jane出品 | AI科技大本营(公众号id:rgznai100)Stack Overflow,一个面向开发者的 IT 技术问答网站,很多程序员都会在上面提问,浏览问题,查找技术知识。在 Top Question 页面,我…

CentOS 6.9下配置安装KVM
注意:KVM一切安装和运行都是在root用户下完成的,并且只有root才能支持某些软件。 一、准备工作: 1、查看系统版本、内核版本 ##查看系统版本 # cat /etc/redhat-release CentOS release 6.4 (Final) ##查看内核版本 # uname -a Linux KVM 2.6…

感觉要大病一场了
呵呵,这两天很累,再加上天气的原因,整个人晕乎乎的,其实很累,可就是睡不着, 其实我不知道是身体的累,还是心累了,总之,整个人就是提不起做事的激情来一个人就这样浑浑噩噩…

【视频】使用VLC采集摄像头,以RTSP协议发送流到网络上
VLC官网 http://www.videolan.org/ VLC3.0.1搭建失败 本人使用VLC3.0.1,搭建失败,总报无法打开URL VLC2.1.5搭建成功 VLC2.1.5官网地址及下载地址 www.videolan.org/vlc/releases/2.1.5.html http://get.videolan.org/vlc/2.1.5/win32/vlc-2.1.5-win32.exe 搭建RTSP …

优质中文NLP资源集合,做项目一定用得到!
整理 | Jane出品 | AI科技大本营(公众号id:rgznai100)今天要给大家在推荐 Github 上一个优质的中文 NLP 工具和资源集合项目——funNLP,已经获得了 5.3k Stars,1k Forks。项目作者 杨洋,一枚水博&互联网…

小程序:js获取验证码时(倒计时模块)
代码例子截图最近在上手开发小程序,发现其实小程序要比vue真的要简单太多了,有一套自己的html(WXML),css(WXSS),虽然有些标签不能直接沿用html5的标签来开发,不过内置的标签还是很好记也不多。今天在做公司的项目时&am…

十大经典排序算法动画与解析,看我就够了
作者 | 程序员小吴转载自五分钟学算法(ID: CXYxiaowu)排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记…

Crystal Reports 财务日记帐凭证套打设计
Crystal Reports 财务日记帐凭证套打设计 一、首先大家看下财务日记帐凭证的纸张格式: 下面我们来分析下有几点要素:1、每页显示5行记录,2、就是在合计处的中文金额大写了。其他页眉页脚在水晶报表中很容易设计。 二、报表设计:在…

oozie调度中的重试和手工rerun一个workflow
在oozie中有Bundle、Coordinator和Workflow三种类型的job,他们之间可以有以下包含关系。 Bundle > Coordinator > Workflow。 1. 重新运行一个Coordinator job,可以通过如下命令: oozie job -rerun 0000034-180116183039102-oozie-hado…

【Qt】在Qlayout中Qlabel::setScaledContents(true);失效
Qlabel中添加图片,并使图片自适应Qlabel的大小 QPixmap picture;picture.load("./1.jpg");ui->label->setScaledContents(true);//图片自适应label大小ui->label->setPixmap(picture); 在layout中Qlabel::setScaledContents(true);失效 解决办法,set…

JavaScript写XML
引用地址:http://zhidao.baidu.com/question/76344574.html?frala0 load 方法 作 用表示从指定位置加载的文件。 基本语法boolValue = xmlDocument.load(url);说 明url 包含要被加载档案的URL 的字符串。假如文件加载成功,传回值即为t…

在家想远程公司电脑?Python +微信一键连接
作者 | 阿文转载自 CSDN(ID:CSDNnews)有时候需要远程家里的台式机使用,因为我平时都是用 MAC 多,但是远程唤醒只能针对局域网,比较麻烦,于是我想用微信实现远程唤醒机器。准备工作本程序主要是实现远程管理…

Python 语法相关知识
系统相关的信息模块: import syssys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a sys.exit(exit_code) 退出程序 s…

【Qt】 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取
编译Qt程序使用动态库时,报错 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取 原因 链接时,使用的dll,而不是lib。 lib是编译时需要的,dll是运行时需要的。 windows下动态库和静态库 动态库:生成动态库时…

Red5安装与入门 与FMS配置
转自:http://www.rosoo.net/a/Media/Streaming/201010/10343.html red5安装时出现问题解决:http://www.cnblogs.com/phinecos/archive/2007/11/26/973109.htmlred5安装设置: 首先需要安装Red5运行所需的java研发环境jdk,我所有的文件都保存到…

面试必备|带你彻底搞懂Python生成器
2019年人工智能系统学: https://edu.csdn.net/topic/ai30?utm_sourceai100_bw 作者 | Rocky0429 转载自 Python空间(ID:Devtogether) 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的…

Kubecon 2017大会Google高级产品经理David Aronchick访谈:机器学习和Kubernetes
\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\在德克萨斯州奥斯汀市举办的Kubecon大会已于近日闭幕,会议吸引了超过4000名工程师,Kubernetes成为了…

【Qt】Qt程序查看动态链接库(windows)
windows下使用dumpbin查看Qt程序运行时需要链接的动态库 打开终端 打开Qt自带的MSVC终端 如:Qt 5.10.0 64-bit forDesktop(MSVC 2017) 查看dumpbin命令 dumpbin微软官网说明 https://docs.microsoft.com/zh-cn/cpp/build/reference/dumpbin-options 直接输入命令dumpbin…

MSN 无法登录 错误代码 8007007e
故障原因: 发生这个错误的原因是一些朋友在网上下载了独立MSN提取包版本进行安装的,因为这个提取包只包含了Windows Live Messenger 2009,却缺少Windows Live Communications Platform,所以造成无法登录的问题。 解决办法…

你不知道的Vue响应式原理
文章首发于github Blog。 本文根据Vue源码v2.x进行分析。这里只梳理最源码中最主要的部分,略过非核心的一些部分。响应式更新主要涉及到Watcher,Dep,Observer这几个主要类。 本文主要弄清楚以下几个容易搞混的问题: Watcher&#…

优秀开发者必备技能包:Python调试器
作者 | Roky0429 来源 | Python空间(ID:Devtogether) 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 写在之前 不管是之前搞 acm 用 c/c 写算法还是后来用 Python 写代码,我发现在程…

【Qt】dumpbin详解
dumpbin简介 DUMPBIN是在Windows平台下用于显示COFF格式文件信息的一个命令行工具。你可以使用DUMPBIN去显示COFF格式的文件信息,比如像vc编译器生成的目标文件(obj),可执行文件(exe)和动态链接库…

感悟Windows7
Win7已经逐渐在中国电脑用户中普遍起来,绝大多数人对其新增的功能很升级的功能都很是好评,接下来就将简略总结一下我对此系统使用的一些感想。 l 界面更加体现以人为本的思想。更加赏心悦目并且选择更加多元化。比如桌面小工具就有了更多的选择并且还可…

【Qt】Qt5在ubuntu16.04无法输入中文解决方式
参考博客 https://blog.csdn.net/linux_2016/article/details/52356576 博客中没有修改库的执行权限 解决方法 安装:fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5 拷贝动态库到Qt安装目录下的两个目录中 cp /usr/lib/x86_64-linux-gnu/qt5/p…

拿下中科大的计算机课程全靠它了!
整理 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 中国科学技术大学,简称“中科大”,是国内有名的 985、211 重点高校。近年…

【阿里Q3财报:阿里云去年营收破百亿,亚洲市场遥遥领先】
2月1号晚间,阿里巴巴公布2018财年第三季度财报,阿里云保持持续强劲的增长,季度营收同比增长104%到35.99亿元。2017年累计营收突破百亿,达112亿,这是国内首次出现百亿规模的云计算服务商,在亚洲市场遥遥领先…

“神仙”打架,“凡人”遭殃
神仙是啥?古时神话时代举手翻江倒海的人物啊,那神仙打架是啥后果,相信大家心里都有个底吧。那现代社会的“神仙”是啥?那就是有钱有权的大人物或者商家,那真是让咱仰望的对象啊~ 话说最近这360跟QQ的巅峰对决&am…

120种小狗图像傻傻分不清?用fastai训练一个分类器
作者:一杯奶茶的功夫 链接:https://www.jianshu.com/p/ab35ed21df87 程序员转行学什么语言? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 这篇文章会讲解如何制作能够分类120种小狗的图像分类器。 这篇文章中所讲述的内容都是基于…

View_01_LayoutInflater的原理、使用方法
View_01_LayoutInflater的原理、使用方法 本篇博客是郭神博客Android视图状态及重绘流程分析,带你一步步深入了解View(一)的读书笔记的笔记。 LayoutInflater简单介绍 setContentView()内部是使用LayoutInflater来完毕载入布局的。setContent…