摘要: 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...带参数的函数示例: #!/bin/bash funWithParam(){ echo "The value of the first parameter is 阅读全文
posted @ 2016-10-17 14:08 疯狂的tiger 阅读(2639) 评论(0) 推荐(0) 编辑
摘要: 函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。Shell 函数的定义格式如下: 如果你愿意,也可以在函数名前加上关键字 function: 函数返回值,可以显式增加return语句;如 阅读全文
posted @ 2016-10-17 14:07 疯狂的tiger 阅读(447) 评论(0) 推荐(0) 编辑
摘要: until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。until 循环格式为: command 一般为条件表达式,如果返回值为 false 阅读全文
posted @ 2016-10-17 11:54 疯狂的tiger 阅读(2268) 评论(0) 推荐(0) 编辑
摘要: 在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环。 break命令 break命令允许跳出所有循环(终止执行后面的所有循环)。下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到sh 阅读全文
posted @ 2016-10-17 11:54 疯狂的tiger 阅读(2731) 评论(0) 推荐(0) 编辑
摘要: while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为: 命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。以下是一个基本的while循环,测试条件是:如果COUNTER小于5,那么返回 true。COUNTER从0开始,每次循环处理时,COUNTER 阅读全文
posted @ 2016-10-17 11:53 疯狂的tiger 阅读(5913) 评论(0) 推荐(0) 编辑
摘要: 与其他编程语言类似,Shell支持for循环。for循环一般格式为: 列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。in 列表是可选的,如果不用它,for 循环使用命令行的位置参数。例如,顺序输出当前列表中的数字: for loop in 1 阅读全文
posted @ 2016-10-17 11:52 疯狂的tiger 阅读(2216) 评论(0) 推荐(0) 编辑
摘要: case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构。case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下: case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数 阅读全文
posted @ 2016-10-17 11:50 疯狂的tiger 阅读(600) 评论(0) 推荐(0) 编辑
摘要: if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句: if ... fi 语句; if ... else ... fi 语句; if ... elif ... else ... fi 语句。 1) if ... else 语句 if ... 阅读全文
posted @ 2016-10-17 11:49 疯狂的tiger 阅读(36044) 评论(0) 推荐(2) 编辑
摘要: printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。注意:printf 由 POSIX 标准所定义,移植性要比 echo 好。如同 echo 命令,printf 命令也可以输出简单的字符串: $printf "Hello 阅读全文
posted @ 2016-10-17 11:42 疯狂的tiger 阅读(17995) 评论(0) 推荐(0) 编辑
摘要: echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式: echo arg echo arg 您可以使用echo实现更复杂的输出格式控制。 显示转义字符 echo "\"It is a test\"" echo "\"It is a test\"" 结果将是:"It is a 阅读全文
posted @ 2016-10-17 11:41 疯狂的tiger 阅读(630) 评论(0) 推荐(0) 编辑
摘要: Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。 定义数组 在Shell中,用括号来表示数组, 阅读全文
posted @ 2016-10-17 11:39 疯狂的tiger 阅读(14939) 评论(0) 推荐(1) 编辑
摘要: 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 str='this is a string' str='this is a string' 单引号字符串的限制: 单引号 阅读全文
posted @ 2016-10-17 11:38 疯狂的tiger 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 以“#”开头的行就是注释,会被解释器忽略。sh里没有多行注释,只能每一行加一个#号。只能像这样: # # 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写: # https://github.com/webfrogs/xcode_shell/blob/master/ipa-b 阅读全文
posted @ 2016-10-17 11:31 疯狂的tiger 阅读(659) 评论(0) 推荐(0) 编辑
摘要: Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加: #!/bin/ 阅读全文
posted @ 2016-10-17 11:29 疯狂的tiger 阅读(5681) 评论(0) 推荐(0) 编辑
摘要: 如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。举个例子: #!/bin/bash a=10 echo -e "Value of a is $a \n" #!/bin/bash a=10 echo -e "Value of a is $ 阅读全文
posted @ 2016-10-17 11:25 疯狂的tiger 阅读(9444) 评论(0) 推荐(0) 编辑
摘要: 前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: echo $$ echo $$ 运行结果 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示, 阅读全文
posted @ 2016-10-17 09:10 疯狂的tiger 阅读(775) 评论(0) 推荐(0) 编辑
摘要: Shell支持自定义变量。 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z 阅读全文
posted @ 2016-10-17 09:06 疯狂的tiger 阅读(12927) 评论(0) 推荐(0) 编辑
摘要: 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。输入一些代码: #!/bin/bash echo "Hello World !" #!/bin/bash echo "Hello World 阅读全文
posted @ 2016-10-17 08:50 疯狂的tiger 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于: 简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。 可移植性:使用POSIX所定义的功能,可以做 阅读全文
posted @ 2016-10-17 08:43 疯狂的tiger 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。 编译型语言 很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“ 阅读全文
posted @ 2016-10-17 08:41 疯狂的tiger 阅读(579) 评论(0) 推荐(0) 编辑