shell脚本的建立 {#21-shell脚本的建立}
使用vim 编辑器编辑脚本,可以事先做个别名
[root@oldboyedu ~]# echo "alias vi= 'vim'" >>/etc/profile
[root@oldboyedu ~]# . /etc/profile
2.1.1 脚本开头(第一行) {#211-脚本开头(第一行)}
规范的shell 脚本第一行会指出哪个程序(解释器),来执行脚本的内容,在linux bash编程中一般为:
#!/bin/bash
或
#!/bin/sh <<===255字符以内
其中开头的“#!”又称为幻数,在执行shell 脚本中,内核会根据“#!”后的解释器来确定用哪个程序解释脚本中的内容,注意:这一行必须在每个脚本顶端的第一行,如果不是第一行则为脚本注释行。 {#其中开头的!又称为幻数,在执行shell-脚本中,内核会根据!后的解释器来确定用哪个程序解释脚本中的内容,注意:这一行必须在每个脚本顶端的第一行,如果不是第一行则为脚本注释行。}
bash版本
[root@oldboyedu ~]# bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>;
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@oldboyedu ~]#
2.1.2 shell 脚本的执行 {#212-shell-脚本的执行}
shell脚本执行的四种方式:
1)bash script-name 或sh script-name
这种方法是当脚本本身没有可执行权限时常使用的方法
2)path/script-name 或./script-name (全路径或当前路径执行脚本)
这种方法首选需要给脚本文件可执行权限
3)source script-name 或. script-name #注意“.” 点号,且点号后有空格。
source或.在执行这个脚本的同时,可以将脚本中的函数和变量加载到当前shell。不会产生子shell。又有点像nginx的include功能。
4)sh <script -name 或cat script-name |sh 或cat script -name|bash
这种用法用的不多,我们在开机启动项优化使用过。
2.1.3 shell脚本开发的规范和习惯 {#213-shell脚本开发的规范和习惯}
1)开头指定脚本解释器
2)开头加长版本版权等信息,可配置~/.vimrc 文件自动添加
3)脚本不要用中文注释,尽量用英文注释
4)脚本以.sh为扩展名。
5)放在统一的目录
6)代码书写优秀习惯
a: 成对的内容一次性写出来,防止遗漏,如;[ ] , ‘’ ,“” 等
b:[ ] 两端要有空格,先输入[ ],退格。输入2个空格,再退格写
c:流程控制语句一次书写完,再添加内容。heen
if 条件
then
内容
fi
d通过缩进让代码易读
f 脚本中引号都是英文状态下的引号,其他字符也是英文状态。
练习题:
1、叙述脚本执行的四种方式
2、写脚本的规范和习惯