写在最前边:在bash中数据类型有两种,分别是数值型和字符型.其中字符型是默认的. 1.算数运算 · 运算符 · 语法 1.1.运算符:+.-.*./.%.** 注意:有些时候 *(乘号)需要转义 1.2.语法:有以下几种方式 VAR为变量名,expression为算数表达式 let VAR=expression VAR=$[expression] VAR=$((expression)) VAR=$(expr argu1 argu2 argu3) 语法示例 2.增强型赋值运算:在自身基础上做赋值…
在Linux系统介绍中,介绍了shell的多个版本,现在的Linux发行版基本都默认使用bash(Bourne Again shell),兼容Bourne shell (sh),本文将简要介绍Bash编程语法. 变量 命名规则 只能使用英文字母,数字和下划线,首个字符不能以数字开头 中间不能有空格,可以使用下划线(_) 不能使用标点符号 不能使用bash里的关键字(可用help命令查看保留关键字) 定义与使用变量 定义变量 your_name="abc" echo $your_name…
概述 shell 中基于 $(()) 的 算数运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 算数运算 代码 #!/bin/bash # $(()) 的数学运算, 里面的内容, 被解释为 算数表达式 # $(()) 内的变量, 可以不加 $ # 只看 正整数 arg1=4 arg2=5 # 算数运算 # 1. + var1=$((arg1+arg2)) echo $var1 # 2. - var2=$((arg1-arg2)) echo $var2 # 3.…
http://blog.sina.com.cn/s/blog_6db275da0101asmf.html #!/bin/sh let a=$1+$2 b=$[$1+$2] ((c=$1+$2)) d=`expr $1 + $2` echo "$1+$2 = ${a}" echo "$1+$2 = $b" echo "$1+$2 = $c" echo "$1+$2 = $d" 输入命令:./plus 1 2 输出结果:1+2 =…
bash中常用的条件测试有三种 条件测试的表达式:[ expression ]  [[ expression]] 第一种:整数测试: -eq 测试两个整数是否相等,比如[ $A -eq $B ] -ne 测试两个整数不等 -gt 测试一个数是否大于另一个数 (great than) -lt 测试一个数是否小于另一个数 (less than) -ge 大于等于 -le 小于等于 -ne 不等于 第二种:文件测试: -e 文件名字或者文件路径 测试文件是否存在 eg:[-e /etc/inittab…
函数:实现独立功能的代码段 函数只有在调用时才会执行 语法一: function F_NAME{ 函数体 } 语法二: F_NAME() { 函数体 } 函数的返回值: 默认函数返回值:函数执行状态返回值,默认是脚本中最后一条命令执行的状态值,没有实际用途 自定义函数返回值:return [0-255] 0:成功 非0:失败 函数示例 循环控制: continue:提前结束本轮循环,直接进入并开始下一次循环. 比如代码会循环五次后,执行完成.在第三次循环中出发了continue则直接跳出第三次循…
局部变量局部变量只在代码块或一个函数里有效 (参考函数里的局部变量)环境变量这种变量会影响Shell的行为和用户接口 在大多数情况下,每个进程都会有一个"环境表", 它由一组由进程使用的环境变量组成.这样看来,Shell看起来和其他的进程一样.每次一个Shell启动时,它都会创建新的合适的环境变量.如果它增加或是更新一个环境变量,都会使这个Shell的环境表得到更新(译者注:换句话说,更改或增加的变量会立即生效),并且这个Shell所有的子进程(即它执行的命令)能继承它的环境变量. 分…
基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下:   对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了listen和accept函数.前面我们也说过listen函数最主要的作用就是将一个socket套接字描述符转为被动监听模式,然后调用accept主要是用于等待客户端(用connect)来连接服务器.connect函数不仅可以用于流式套接字还可用于数据报式套接字.在TCP中,客户端调用connect…
面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你会觉得这样子的开发毫无激情.为什么TCP的开发就要按照这样的流程来呢?而且一般出的问题几乎都不在这几个系统调用上,原因何在?当我们弄清网络开发的本质,协议栈的设计原理.数据流向等这些问题的答案也就会慢慢浮出水面了.接下来这几篇博文主要是围绕网络编程展开,目的是引出后面对于Linux下TCP/IP协议…
常用套接字类型<1>流式套接字(SOCK_STREAM)---TCP      提供面向连接的.可靠的传输服务,数据无差错,无重复的发送,      且按发送顺序接收.<2>数据报式套接字(SOCK_DGRAM)      提供无连接服务.不提供无差错保证,数据可能丢失或者重复,并且接收顺序混乱.<3>原始套接字(SOCK_RAW)…