shell脚本编程在linux系统管理拥有着极为强大的能力,可以说,当前的工作已经日益偏向自动化了。如果我们极不愿意去学习这方面的知识,可能在未来的工作中颇有不便。...3、变量$符 变量是编程中最重要的元素之一,倘若一个程序均用常量编写,那么在参数改变或版本更迭中将遇到极大的麻烦。通常,引用变量的内容在变量名前增加一个$符即可。...判断字符串长度是否为0 STRING1 = STRING2 两字符串是否相等 STRING1 !...= STRING2 两字符串是否不相等 2、INT判断 INT1 -eq INT2 判断两整型是否相等 INT1 -ge INT2 判断INT1是否大于或等于INT2 INT1 -gt INT2 判断...INT1是否大于INT2 INT1 -le INT2 判断INT1是否小于或等于INT2 INT1 -lt INT2 判断INT1是否小于INT2 INT1 -ne INT2 判断两整型是否不相等
= str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1 当串...str1为非空时为真 2 数字的判断 int1 -eq int2 两数相等为真 int1 -ne int2 两数不等为真 int1 -gt int2 int1大于int2为真 int1 -...ge int2 int1大于等于int2为真 int1 -lt int2 int1小于int2为真 int1 -le int2 int1小于等于int2为真 3 文件相关的if判断条件语句...-r file 用户可读为真 -w file 用户可写为真 -x file 用户可执行为真 -f file 文件为正规文件为真 -d file 文件为目录为真...非 语法虽然简单,但是在SHELL里使用的时候,它可以实现强大的功能或执行逻辑。
int1 -ne int2 不等? int1 -gt int2 int1 > int2 ? int1 -ge int2 int1 >= int2 ?...int1 -lt int2 int1 < int2 ?...int1 -le int2 int1 <= int2 2.10 双引号及单引号 n$echo "$HOME $PATH" -- 显示变量值 /home/hbwork opt/kde/bin:/usr/...在使用if、while时,在注意变量与符号之间的分割 例如:if [ `expr $a % 3` -ne 0 ],while [ "$var" !...+$x //shell中算术计算使用let let x=x+1 done echo $sum 整理自网络
int1 -ne int2 不等? int1 -gt int2 int1 > int2 ? int1 -ge int2 int1 >= int2 ?...int1 -lt int2 int1 < int2 ?...int1 -le int2 int1 <= int2 2.10 双引号及单引号 $echo "$HOME $PATH" -- 显示变量值 /home/hbwork opt/kde/bin:/usr/...在使用if、while时,在注意变量与符号之间的分割 例如:if [ `expr $a % 3` -ne 0 ],while [ "$var" !...do echo $i done x=1 sum=0 while [ $x -le 10 ] //注意[ ] 两边的空格 do let sum=sum+$x //shell中算术计算使用let let
shell入门shell 是一个用C语言写的程序,它是用户使用linux的桥梁shell 脚本 实现自动化 重复性的操作编写脚本完成,减少人工失误---SHELL的变量shell的变量1、局部变量 定义在脚本或命令中...中接收参数 sys模块python中sys模块里面的argv属性。...数值判断[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,=[ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,[ INT1 -gt INT2 ] INT1...大于INT2返回为真 ,>[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<[ INT1 -le INT2...] INT1小于等于INT2返回为真,<=逻辑判断[ !
if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、...数字的值进行比较判断的: 一. if的基本语法 1.if与[之间要有空格 2.[]与判断条件之间也必须有空格 3.]与;之间不能有空格 二....对数字的判断 1.int1 -eq int2 #int1和int2相等 2.int1 -ne int2 #int1不相等int2 3.int1 -gt int2 #int1大于int2 4.int1 -...ge int2 #int1大于等于int2 5.int1 -lt int2 #int1小于int2 6.int1 -le int2 #int1小于等于int2 四....-x file #用户可执行为真 4.-f file #文件存在且为正规文件为真 5.-d file #如果是存在目录为真 6.-c file #文件存在且为字符设备文件 7.
int1 -ne int2 不等? int1 -gt int2 int1 > int2 ? int1 -ge int2 int1 >= int2 ?...int1 -lt int2 int1 < int2 ?...int1 -le int2 int1 <= int2 2.10 双引号及单引号 $echo "$HOME $PATH" -- 显示变量值 /home/hbwork opt/kde/...在使用if、while时,在注意变量与符号之间的分割 例如:if [ `expr $a % 3` -ne 0 ],while [ "$var" !... do let sum=sum+$x //shell中算术计算使用let let x=x+1 done echo $sum
= str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1 ...当串str1为非空时为真 2 数字的判断 int1 -eq int2 两数相等为真 int1 -ne int2 两数不等为真 int1 -gt int2 int1大于int2为真...int1 -ge int2 int1大于等于int2为真 int1 -lt int2 int1小于int2为真 int1 -le int2 int1小于等于int2为真 3 文件的判断...非 结尾 语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。...[ -x FILE ] 如果 FILE 存在且是可执行的则为真。 [ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
字面量 布尔类型值在OC中是0和1,但Swift中是true和false(和大部分语言一样) 字符串类型值用双引号 字符类型值和字符串一样都是用双引号括起来,但是字符变量必须用Character修饰,否则会默认是字符串...-2 // 十六进制,意味着15x2^-2,相当于十进制的3.75 /* 以下都是表示12.1875 十进制:12.1875、1.21875e1 十六进制:0xC.3p0 */ // 数组...整数转换 在Swift中不同类型之间是不能运算的,否则编译器会报错 正确做法: let int1: UInt16 = 2_000 let int2: UInt8 = 1 let int3 = int1...整数、浮点数转换 let int1: UInt16 = 2_000 let int2: UInt8 = 1 let int3 = int1 + UInt16(int2) let int = 3 let...(Python中也有此类型): 元组与列表类似,不同之处在于元组的元素不能修改。
基本语法# if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 2....数值判断# 表达式 解释 [ INT1 -eq INT2 ] INT1和INT2两数相等为真,= [ INT1 -ne INT2 ] INT1和INT2两数不等为真,!...= [ INT1 -gt INT2 ] INT1大于INT1为真,> [ INT1 -ge INT2 ] INT1大于等于INT2为真,>= [ INT1 -lt INT2 ] INT1小于INT2为真...,< [ INT1 -le INT2 ] INT1小于等于INT2为真,<= 4....如果文件描述符 FD 打开且指向一个终端则为真 [ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真 [ -w FILE ] 如果 FILE存在且是可写的则为真 [ -x
可以直接 man bash 学习语法和相关命令。...[ int1 -eq int2 ] int1等于int2 [ int1 -ne int2 ] int1不等于int2 [ int1 -gt int2 ] int1大于int2 [ int1 -ge int2... ] int1大于或等于int2 [ int1 -lt int2 ] int1小于int2 [ int1 -le int2 ] int1小于或等于int2 x=1; [ $x -eq 1 ]; echo...sh -x xx.sh 是在一个脚本中,调用另一个脚本执行,启动一个新的子进程,-x 会输出所有的执行信息。 脚本调用脚本,要对被调用脚本的执行返回值进行判断。...命令typeset也可以在ksh脚本中运行。
set | grep -e HOME -e BASH 在b.sh中随便打个系统变量看看。 echo "hello,world!" echo "\$0":$0 exit 0 执行结果如下。...,0x十六进制。...[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,= [ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 , [ INT1 -gt INT2 ] INT1...大于INT2返回为真 ,> [ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>= [ INT1 -lt INT2 ] INT1小于INT2返回为真 ,< [ INT1 -le INT2.../bin/sh -x 在脚本中用set命令启用or禁用参数:其中set -x表示启用,set +x表示禁用。
t这类字母没有特殊含义,如果想给他赋予特殊含义,则需要使用\进行转译 2、f-string f-string是Python3.6之后出现的格式化语法 格式:f’要输出的字符串{要拼接的变量}’...代表1 false 代表0 # print(int1 + True) # - # 同加法运算一致 # * print(int1 * int2) print(int1 * float1) # /...print(int1 / int2) print(int1 / float1) # //(整除) 两个数据相除 取商 # 11 / 4 商 2 余 3 print(int2 // int1) #...int1 开根号等于几 int1 ** 0.5 print(int1 ** 2) # 在除法运算中,结果必定为浮点型 print(9 / 3) # 3.0 # 浮点型参与运算后,结果一定是浮点型...= 2 int2 = int1 print(int1, int2) 6、复合赋值运算符 # += -= *= /= //= %= **= a = 1 # a += 1 >>> a = a + 1
我们可以看到在设置值的过程中是和java源代码的顺序是一致的,是按照int1,int2,int3,int4,int5的顺序一个一个设置的。...从生成的代码中,我们可以看到putstatic是按照int1,int5,int4,int3,int2的顺序进行的,也就是说进行了重排序。 如果我们将int2设置成为Volatile,看看结果如何?...这也分别对应了我们在increase方法中要做的事情。...上图的结果是在JIT Watcher中的C2编译器的结果,如果我们切换到C1编译器: ? 这次结果没错,5个int都在,同时我们看到这5个int居然没有重排序。...写的内存屏障 再来分析一下上面的putstatic int2: lock addl $0x0,-0x40(%rsp) ;*putstatic int2 {reexecute=0 rethrow=0 return_oop
= str2 当字符串 str1 和 str2 不等时为真 -n str1 当字符串的长度大于 0 时为真(串非空) -z str1 当字符串的长度为 0 时为真(空串) str1... 当字符串 str1 为非空时为真 数值的判断 int1 -eq int2 两数相等为真 int1 -ne int2 两数不等为真 int1 -gt int2 int1 大于...int2 为真 int1 -ge int2 int1 大于等于 int2 为真 int1 -lt int2 int1 小于 int2 为真 int1 -le int2 int1 小于等于 int2...为真 文件相关的判断语句 -r file 用户可读为真 -w file 用户可写为真 -x file 用户可执行为真 -f file 文件为普通文件为真 -d file...条件判断 ] then Command else Command fi 举例如下 # 获取操作系统类型 SYSTEM=`uname -s` # [] 内两边必须有空格 # if 与 then 在同一行
若文件存在且其大小大于零,则为真 -u file 若文件存在且设置了SUID位,则为真 -w file 若文件存在且可写,则为真 -x...= string2 若两个字符串不相等,则为真 int1 -eq int2 若int1等于int2,则为真 int1 -ne int2 若int1不等于int2,则为真 int1...-lt int2 若int1小于int2,则为真 int1 -le int2 若int1小于等于int2,则为真 int1 -gt int2 若int1大于int2,则为真...int1 -ge int2 若int1大于等于int2,则为真 !...可以是任何有效的测试表达式 expr1 -a expr2 若expr1和expr2都为真则整式为真 expr1 -o expr2 若expr1和expr2有一个为真则整式为真 上一篇:对UML中的
[INT1 INT2运]应该是前面的列表的一部分,而后面的项目(例如, 当量- >是真的如果int1等于int2)应该是一个“ 孩子 ”名单[INT1 INT2运]其中op是以下比较运算符之一。...当量- >如果int1等于int2是真实的。 -ne - > true,如果INT1不等于int2。 -lt - > true,如果int 1小于INT2。...-le - >真如果int1小于或等于int2。 -gt - > true,如果INT1比INT2更大。 -ge - >真如果int1大于或等于int2。...其基本语法是: for item in SEQUENCE; do COMMANDS; done 其中, 项目是表示每次迭代过程中序列中的每个值的通用变量。...该-quiet标志用于防止grep的从显示在屏幕上,其中的字的运行出现的线条。 当发生这种情况,上面的命令返回0退出状态(由$表示?在if结构),从而验证该服务正在运行。
如果我们将所有的方案硬编码在同一个类中,那么在今后修改,添加,删除某个方案的时候就会改动原有类,这是违反开闭原则的。...场景分析 在该场景中,传入的两个整数参数是不变的,但是对于这两个整数的具体操作可以灵活切换,那么我们可以使用策略模式:将每个操作(算法)封装起来,在需要替换的时候将Context类持有的具体策略实例更新即可...代码实现 首先我们定义好抽象策略类和具体策略类: 因为是针对两个整数的操作,所以在抽象策略类中,我们只需定义一个传入两个整数的接口即可。...:int1 int2:int2]; } @end Context类在构造器(init方法)注入了一个具体策略实例并持有它,而且Context也提供了set方法,让外部注入进来具体策略类的实例。...现在所有的类都定义好了,下面我们看一下具体如何使用: int int1 = 6; int int2 = 3; NSLog(@"int1: %d int2: %d",int1,int2); //
基本运算 ---- 实际中很少用到。...file ] # 如果文件存在且可执行 # 整数变量表达式 if [ int1 -eq int2 ] # 如果int1等于int2 if [ int1 -ne int2 ]...# 如果不等于 if [ int1 -ge int2 ] # 如果>= if [ int1 -gt int2 ] # 如果> if [ int1 -le int2 ]...# 如果<= if [ int1 -lt int2 ] # 如果< # 字符串变量表达式 # 注意:字符串变量最好加上双引号,否则如果变量值本身有空格等,就会报错,会变成一个命令,这里经常出错...'{print $1}'` echo $name done # ((语法循环--有点像C语法,但记得双括号 for ((i=1;i<100;i++)) do if((i%3
2进制字面量和bin()函数 >>> bin(438) '0b110110110' >>> _438 = '0b110110110' >>> _438 '0b110110110...在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list 对象和seq是可迭代的。 ...语法: class Foo(*bases, **kwds): pass (15)支持class decorator。...(16) Python引入很多新的特性, python 2.7.x需要继承object类才可以使用, 在python 2.7.x的文档中, 有标注:如: Note xxx() only works for...则需要继承object类才可以使用, 否则无效;在python 3.x中, 则隐式(implicit)继承object类, 即新型式的类(new-style class), 则不需要继承object类
领取专属 10元无门槛券
手把手带您无忧上云