学习shell的第三天
1、编程介绍
早期编程:
驱动 硬件默认是不能使用的;
不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行“翻译”;
更趋近与硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家所限制;C C++ 的底层就是汇编语言;
现在编程:
基于高级语言,以及超高级语言,更好的让程序员能够的实现编程功能;
高级语言、超高级语言需要*翻译*成计算机可读的语言(二进制指令)
解释型 -- 逐行翻译,逐行执行 shell python JAVA
bash -x filename.sh
编译型 -- 一次编译,全部执行 C语言 C++ C# JAVA
程序 = 指令 + 数据
面向对象 -- 侧重于数据的编程语言
面向过程 -- 侧重于指令
【一行一行】
1、顺序执行
2、循环执行 -- *for(遍历)* while(循环条件) until(和while相反)
3、选择执行--分支 if *case*
2、shell脚本语言介绍
优点:调用os(操作系统)的命令行,来实现所有功能;
缺点:没有库调用(区分Python)
shell的第一句话!!!(必须写)
#!/bin/bash -- 定义脚本解释器 (普遍认为#为注释行,这里特殊)shebang
#!/usr/bin/python
echo $SHELL -- 查当前会话的shell程序
/etc/passwd -- 制定了用户默认支持的shell程序(/sbin/nologin)
1、bash命令来执行脚本
-n 查看shell脚本的逻辑错误(注意:单词写错可不管)
-x 逐行显示执行的脚本程序(方便拍错)
2、授权 chmod u+x filename.sh
使用全路径执行脚本,即可
环境变量
局部变量 declare 命令 -- 定义变量类型
本地变量 local 在函数中使用
数值型:
1、整形 int
2、浮点型 float
3、布尔值 0 1 (真 假) (True False)
字符串:
1、普通字符及字符串
2、数组
强类型语言 -- 数值必须被定义,才能进行处理或运算
弱类型语言 -- 编程语言可以自动识别变量类型
【*多态* 一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】
$? -- 上一条命令的执行状态 0 正确 1-255 错误
$1 $2 ... ${10} -- 命令后面传入脚本的数据,以空格为分隔符
$# -- 统计传参数量 ${$#} ?
$* -- 表示所有的传参,所有的传参以字符串形式进行输出
$@ -- 表示所有传参,将所有的传参以列表的形式进行输出
【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】
NAME=VALUE (一个等号叫赋值,两个等号叫判断)
我们通过命令declare 定义变量类型
declare -i 整数 int() str()
declare -a 数组
变量命令:
1、下划线的方式指定变量名称
2、驼峰命名方式
在脚本中,我们需要进行 语句分支; 说白了,就要做判断
判断就是使用test命令来实现;
使用格式:
1、test [option] file
2、[ 条件语句 ]
【什么时候加 [ ] 什么时候不加 [ ] ?】
常见的test选项:
比较选项:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
判断选项:
-f 判断是否为普通文件
-d 判断是否为目录文件
-L 判断是否为连接文件
-r -w -x 判断文件是否具有 读 写 执行 权限
关联选项:
-o 或
-a 与
! 非
字符串判断:
= 判断两边的字符串是否相同
!= 不等于
-z 判断字符串是否存在
-n 和 -z 相反,存在为假,不存在为真
与 && : 两边的命令,都为真,结果才是真
或 || : 两边的命令,一边为真,就是真,同时为假,才是假
非 !=
[ $? -eq 0 ] && exit 0 || exit 1
*let 1+1
let a=1+1
echo $a
expr 1*1
expr 1 * 10
*$[$1+10]
a=$[2+3]
echo $a
$(($1/$2))
a=$((3/2))
echo $a
学习shell的第三天的更多相关文章
- 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤
编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时 ...
- bash shell学习-shell script基础 (笔记)
A chain no stronger than its weakest link. "一着不慎,满盘皆输" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) Linux ...
- bash shell学习-shell基础 (笔记)
When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时 ...
- 菜鸟教程之学习Shell script笔记(上)
菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...
- 鸟哥的Linux私房菜——第十六章:学习Shell Scripts
视频链接:http://www.bilibili.com/video/av10565321/ 1. 什么是 Shell Script (shell写的脚本)1.1 干嘛学习 shell s ...
- (转)跟着老男孩一步步学习Shell高级编程实战
原文:http://oldboy.blog.51cto.com/2561410/1264627/ 跟着老男孩一步步学习Shell高级编程实战 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...
- 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)
第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...
- 【shell】shell编程(三)-if,select,case语句
通过前两篇文章,我们掌握了shell的一些基本写法和变量的使用,以及基本数据类型的运算.那么,本次就将要学习shell的结构化命令了,也就是我们其它编程语言中的条件选择语句及循环语句. 不过,在学习s ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
随机推荐
- vue 剪切图片上传头像,使用 cropperjs 实现
我使用的是vue,移动端的项目. 官网地址:cropperjs GitHub地址:https://github.com/fengyuanchen/cropperjs/blob/master/READM ...
- noi.ac #535 生成树
题目链接:戳我 我们考虑按照编号依次加点,然后维护一个栈. 预设生成树的颜色为color. 对于当前点x,如果它和栈首的点连边颜色相同,那么他们的连边可以作为生成树上面的边,点i已经连接,直接brea ...
- TensorFlow使用记录 (八): 梯度修剪 和 Max-Norm Regularization
梯度修剪 梯度修剪主要避免训练梯度爆炸的问题,一般来说使用了 Batch Normalization 就不必要使用梯度修剪了,但还是有必要理解下实现的 In TensorFlow, the optim ...
- python-线性回归预测
导入包 # Required Packages import matplotlib.pyplot as plt import numpy as np import pandas as pd from ...
- 解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题
解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题: <style> [v-cloak]{ display: none; } </style> <div id=& ...
- RESTful API是什么?
1. REST 是Repersentational State Transfer的缩写 翻译为"表述性状态传递",那么什么是表述性状态传递呢?为了理解这个词语,我们从"R ...
- LeetCode 86. 分隔链表(Partition List)
题目描述 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1-> ...
- Ubuntu下qt5使用vlc
一:Ubuntu下在线安装qt5,同时安装了qt creator 二:打开终端执行sudo apt-get install libvlc5 libvlc-dev libvlccore-dev 安装 ...
- AsyncTaskMethodBuilder
AsyncTaskMethodBuilder Represents a builder for asynchronous methods that return a task. public stru ...
- EBS AP 创建会计科目失败
路径:应付款系统管理员/发票/发票 问题描述: 在AP发票界面录入一笔发票,验证发票,撤销发票,然后在AP发票界面的“活动”中创建会计科目,发现带出的并发请求“创建会计科目”正常跑完,但是通过“报表/ ...