文章目录
- 一、基本概念
- 1、脚本文件命名方式
- 2、解释器分类
- 3、基本基本组成内容
- 4、脚本编写规范与格式说明
- 5、自动生成脚本的注释与配置信息
一、基本概念
shell又称为命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于Windows操作系统中的命令行,但是shell的功能远比命令行强大的多,在Unix或者localhost中,shell即是用户交互的界面,也是控制系统的脚本语言;
1、脚本文件命名方式
脚本文件名称保持不冲突即可,基于方便使用和查阅因此相对制定了多数人使用的规范与标准,其中大驼峰与小驼峰命名法较为实用。
- 大驼峰命名法:
MyLastName
、MyFirstName
… - 小驼峰命名法:
myLastName
、myFirstName
…
2、解释器分类
Bourne shell
:标识为sh,该shell由steve Bourne在贝尔实验室编写,在许多Unix系统中,该shell是root用户的默认shell;Bourne-Again shell
:标识为bash,该shell是Brian Fox在1987年编写,是绝大多数localhost发行版的默认shell;Korn shell
:标识为ksh,该shell由贝尔实验室的David Korn在二十世纪八十年代早期编写,它完全向上兼容Bourne shell并包含了C shell的多个特性;C shell
:标识为csh,该shell由Bill Joy在BSD系统上开发,由于其语法类似于C语言,因此成为C shell;
查看当前系统的支持的shell解释器
[root@localhost ~]
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看系统默认的shell解释器
[root@localhost ~]
/bin/bash
3、基本基本组成内容
- 脚本第一行标注代码解释器路径:
#!/bin/bash
; - 注释:说明代码的功能,使用#标识单行注释;
- 可执行语句:实现代码的功能。
案例如下:
[root@localhost ~]
echo -e "this is test txt!"
[root@localhost ~]
this is test txt!
4、脚本编写规范与格式说明
- 开头指定脚本解释器:由于版本问题,使用sh与bash的解释器可能存在差异,因此要求必须在shell脚本第一行标识代码运行解释器。
#!/bin/bash
- 开头加版本权限等信息:非必须要求,可以选择性添加。
[root@localhost shell]
user01:x:1002:1002::/home/user01:/bin/bash
[root@localhost shell]
user01:x:1002:1002::/home/user01:/bin/bash
[root@localhost shell]
i=1
while [ $i -le 10 ]
do
if [ $i -le 9 ]
then
username=user0$i
else
username=user$i
fi
! id $username &> /dev/null && {
useradd $username
echo $username | passwd --stdin $username &> /dev/null
}
let i++
done
- 仔细阅读出错信息:出错信息提供了纠错建议,合理使用错误信息可以最快解决代码问题。
纠错可以使用sh -x
显示shell脚本执行过程,利用排查故障。
[root@localhost ~]
shell.sh: line 4: cho: command not found
[root@localhost ~]
1
2
3
4 cho "this is test txt!"
[root@localhost ~]
+ cho 'this is test txt!'
shell.sh: line 4: cho: command not found
5、自动生成脚本的注释与配置信息
在书写脚本规范时,可以使用以下脚本自动添加所需内容,减少重复工作正是脚本代码最本质的功能。
[root@localhost shell]
set number
set tabstop=4
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
func SetTitle()
if expand("%:e")=='sh'
call setline(1,"#!/bin/bash")
call setline(2," ")
call setline(3,"# Data:创建日期")
call setline(4,"# Author:作者")
call setline(5,"# Mail:邮件或联系方式")
call setline(6,"# Function:实现功能")
call setline(7,"# Version:版本信息")
endif
endfunc
[root@localhost shell]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)