shell脚本
<h2>一、认识shell</h2>
<pre><code>这里说的shell,是指shell脚本,一种为shell编写的脚本程序。shell的种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、Shell for Root(/sbin/sh)
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
以 # 开头的行就是注释,会被解释器忽略。
echo 命令用于向窗口输出文本。
echo -e "OK! \n" #-e 开启转义,\n才有效
printf命令也是一个输出命令,但是它跟c语言的printf()函数差不多,可以进行格式化输出。
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
运行shell的两种方法:一: ./filename.sh ;二: sh filename.sh</code></pre>
<h2>二、shell变量</h2>
<pre><code>1、命名变量只能用字母、数字、下划线,首字符不能以数字开头;
2、变量名和等号之间不能有空格,跟其它编程语言不一样。例如:不能这样写(var = 123),定义变量,your_name="runoob.com" ;
3、使用一个定义过的变量,只要在变量名前加美元符即可,例如:$var或${var},{}可用可不用,主要是用来识别变量的边界;
4、使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变;语法:readonly var
5、使用 unset 命令可以删除变量;语法:unset var
6、变量类型:一.局部变量;二.环境变量;三.shell变量</code></pre>
<h2>三、字符串</h2>
<pre><code>字符串可以用单引号,也可以用双引号;双引号的优点:双引号里可以有变量;双引号里可以出现转义字符;单引号不行。
获取字符串长度: ${#var}
提取子字符串:${var:0:3}
查找字符串:`expr index "$string" io`,查找字符 i 或 o 的位置,`是反引号,而不是单引号'。</code></pre>
<h2>四、数组</h2>
<pre><code>bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
数组元素的下标由 0 开始编号;定义数组的一般形式为:array_name=(value0 value1 value2 value3);读取数组:${array_name[n]};使用 @ 符号可以获取数组中的所有元素,${array_name[@]}
获取数组的长度:${#array_name[@]}或者${#array_name[*]}</code></pre>
<h2>五、传递参数</h2>
<pre><code>在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
其它参数字符:$#:传递到脚本的参数个数
$*:以一个单字符串显示所有向脚本传递的参数
$$:脚本运行的当前进程ID号
$!:后台运行的最后一个进程的ID号
$?:显示最后命令的退出状态。0表示没有错误,其它任何值表示有错误。</code></pre>
<h2>六、运算符</h2>
<pre><code>原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 expr,它是一款表达式计算工具,使用它能完成表达式的求值操作。
其它的知识可以看菜鸟教程的shell运算符。</code></pre>