一、学习Shell条件
1、熟练使用vim编辑器 配置ssh终端 以及 .vimrc 等
2、多掌握命令 熟练使用
3、掌握Linux正则表达式及三剑客 grep sed awk
4、熟悉常见的Linux网络服务部署、优化、日志分析及排错
二、学号shell编程
1、掌握Shell脚本基本语法的方法
2、掌握Shell脚本的各种常见语法
3、形成自己的脚本开发风格
4、从简单做起,简单判断,简单循环
5、多模仿,多放下参考资料练习,多思考
6、学会分析问题,逐渐形成编程思维
7、编程变量名字要规范,采用驼峰语法表示
http://edu.51cto.com/pack/view/id-546.html
三、shell脚本入门
1、什么是shell
作用是解释执行用户输入的命令及程序等,用户每输入一条命令,Shell就解释执行一条。
这种从键盘一输入命令,就可以立即得到回应的对话方式,称为交互的方式
2、什么是shell脚本?
命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序就被称为Shell脚本
四、脚本语言种类
一类是Bourne shell,另一类是C shell
1、Bourne shell
Bourne shell(sh)、Korn shell(ksh)、Bourne Again Shell(bash)三种类型
2、C shell
csh、tcsh两种类型
命令查看Shell支持:
[root@localhost ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh
3、查看系统默认的shell
[root@localhost ~]# echo $SHELL /bin/bash [root@localhost ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
五、Shell脚本建立与执行
修改vi别名:
[root@oldboy ~]# echo "alias vi='vim'" >>/etc/profile [root@oldboy ~]# tail -1 /etc/profile alias vi='vim' [root@oldboy ~]# source /etc/profile
1、开头第一行(幻数)
#! /bin/bash 或 #! /bin/sh #<==255个字符以内
实例test.sh
#!/bin/bash echo "hello shell"
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@localhost ~]# bash --version GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc.
2、注释
#注释内容
3、脚本执行
执行时先查找系统环境变量ENV
指定了环境文件(加载顺序通常是/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容
执行方式:
bash script-name 或者 sh script-name
path/script-name 或 ./script-name (需要执行权限 chmod +x script-name)
source script-name或.script-name
source 或 .
sh<script-name或cat scripts-name|sh
4、脚本开发规范
Shell脚本的第一行是指定脚本解释器
#!/bin/bash
或
#!/bin/sh
Shell脚本的开头会加版本、版权等信息
# Date: 16:29 2012-3-30
# Author: Created by oldboy
# Blog:http://oldboy.blog.51cto.com
# Description:This scripts function is.....
# Version:1.1
尽量避免中文
export LANG="zh_CN.UTF-8"
Shell脚本的命名应以.sh为扩展名
script-name.sh
Shell脚本应存放在固定的路径下
/server/scripts
5、脚本开发习惯
成对的符号应尽量一次性写出来,然后退格在符号里增加内容
{}、[]、''、``、""
中括号([])两端至少要有1个空格
对于流程控制语句,应一次性将格式写完,再添加内容
if 条件内容
then
内容
fi
通过缩进让代码更易读
if条件内容
then
内容
fi
对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格
OLDBOY_FILE="test.txt"
脚本中的单引号、双引号及反引号必须为英文状态下的符号,其实所有的Linux字符及符号都应该是英文状态下的符号