#!/bin/bash
2.在shell脚本中,除了shebang之外,所有行首为#字符的行,均被解释为注释行:即解释器只会解释其内容,但并不予以执行;(和C语言的//一样)
3.解释器会忽略脚本文件中所有的空白行;指的是:在一行文本中,除了空白字符,空格字符,指标字符之外不具备其他任何字符的行;
4.大量的命令和关键字
命令:内部或外部应用程序
关键字:内置于shell,只能在某种特定结构体中执行的命令;keyword;
如:if,else,then,do,while,for,select,until,case,fi,esac,
5.shell中所有的特殊功能字符;
注意:所有被编写进shell脚本文档的命令、关键字及符号必须是ASCII编码格式的字符,其他编码格式的字符可以出现在shell脚本,但不具有任何特殊含义;
如何编写shell脚本?
可以利用所有的文本文档编辑工具进行shell脚本编写,如:
nano,vi,vim,pico,emacs,...
通常在linux的各发型版本中,推荐使用vim;
脚本文件的命名方式:
一般情况下,会为脚本设置".sh"的名称后缀;较低版本的编辑工具,会根据文件的后缀名称来识别是否为shell脚本文件;较高版本的文本编辑工具,如vim7,无需过多的关心文件后缀名的问题。
脚本的运行方式:
脚本内容:
1.为脚本文件赋予执行权限,可以直接以绝对路径或相对路径的方式运行此文件:
# chmod +x /PATH/TO/SOME_SCRIPT_FILE
# /PATH/TO/SOME_SCRIPT_FILE
注意:如果脚本文件所在目录路径存储于PATH变量中,则直接以脚本文件名来执行即可;
2.直接使用解释器运行脚本,将脚本文件作为解释器程序的参数;
# bash /PATH/TO/SOME_SCRIPT_FILE
bash命令的常用选项:
-x:使bash在解释脚本的过程展示在标准输出上;一般用于shell脚本排错;
-n:对脚本文件进行预执行,以分析脚本中是否存在语法类错误;如果没有错误,则不输出任何信息;相反,则输出简洁的提示信息;具体的错误定位需要自行判断;
注意:此种方式中,脚本文件是否有执行权限并不是很重要的属性;
注意:以上两种方式,在执行脚本时,会在当前shell中开启一个新的子shell以运行脚本;一般情况下,当脚本运行结束,该子shell也会被随之销毁;因此,所有在脚本中定义的变量,在脚本末尾处,最好将其明确的撤销;unset gc
[root@localhost ~]# source /tmp/test1.sh
18
[root@localhost ~]# . /tmp/test1.sh
18
注意:
1.source命令不会在运行脚本时开启子shell,而是在当前shell中运行;
2.使用source命令执行的脚本中不要包括诸如exit类的命令;
联系:写一个脚本:
当Alex用户不存在时,创建之;如果成功创建,则显示成功创建的提示信息,否则显示用户已存在;
#!/bin/bash
#
! id alex &> /dev/null && useradd alex && echo "cerat alex" || echo "no creat alex"
利用bash脚本程序实现算术运算:
算术运算操作符:
常用的基本算术运算符:
+,-,*,/,%,**
增强型的算术运算符:
+=,-=,*=,/=,%=
特殊的增强型算术运算符:
++,--
算术运算方法:
1.$[expression]
其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可愿意将$???号省略;
示例:
# echo $[3+4]
# NUM 1=5;NUM2=4; echo $[NUM1+NUM2]
&n