shell脚本简介
什么是shell?
shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(执行脚本程序)的方式。
下图的黄色部分就是命令解释器shell处于的操作系统中位置形象图解。
什么是shell脚本?
:清除/var/log下messages日志文件的简单命令脚本。
#把所有命令放在一个文件里堆积起来就形成了脚本,下面是一个最简单的命令堆积形成的shell脚本
#root身份运行
#清楚日志
cd /var/log
cat /dev/null > messages
echo "Logs cleaned up."
上述脚本存在如下问题:
1、如果不是root用户无法执行清理日志。
2、无流程控制语句,没有判断和逻辑。
示例2:包含命令、变量和流程控制语句的清除/var/log下messages日志文件的shell脚本。
#!/bin/bash
#清除日志脚本
LOG_DIR=/var/log
ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限
#使用root运行
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Mast be root to run this script."
exit 1
fi
cd $LOG_DIR || {
echo "Cannot change to necessary directory." >&2
exit 1
}
cat /dev/null > messages && echo "Logs cleaned up."
exit 0
#退出之前返回0表示成功,返回1表示失败。
拓展:清空日志及文件内容的三种方法。
[root@lamp ~]# echo >test.log
[root@lamp ~]# >test.log
[root@lamp ~]# cat /dev/null > test.log
shell脚本在运维工作中的地位
shell脚本很擅长处理纯文本类型的数据,而linux系统中几乎所有的配置文件(如nfs、rsync、httpd、nginx、lvs等)、多数启动文件都是纯文本类型的文件。因此利用shell可以在linux系统中发挥巨大作用。
shell脚本语言的种类
在UNIX/LINUX中主要有两大类shell。
Bourne shell包括sh、ksh和bash。
Bourne shell (sh)
Korn shell (ksh)
Bourne Again shell (bash)
POSIX shll (sh)
C shell包括csh和tcsh。
C shell (csh)
TEXES/TOPS C shell(tcsh)
shell脚本语言是若类型语言,较为通用的shell有标准的Bourne shell(sh)和C shell(csh)。其中Bource shell(sh)已经被bash shell取代。
查看系统的shell。
[root@lamp ~]# cat /etc/shells
/bin/sh
/bin/bash #功能更强大
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
常用操作系统的默认shell
Linux是bourne agaion shell(bash)。
Solaris和FreeBSD缺省的是Bourne shll(sh)。
AIX下是korn shell(ksh)。
HP-UX缺省的是POSIX shell(sh)。
查看CentOS默认shell。
第一种方法。
[root@lamp ~]# echo $SHELL
/bin/bash
[root@lamp ~]# echo $shell
bash
第二种方法。
[root@lamp ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
更改默认的shell配置文件。
[root@lamp ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
shell脚本的建立和执行
、子shell会直接继承父shell的变量、函数等。2、如果希望父shell调用子shell的变量、函数等,用source或"."点号执行脚本。
shell脚本开发的基本习惯
1)脚本第一行指定脚本解析器。
#!/bin/sh或#!/bin/bash
2)脚本开头加版本版权等信息
#Date: 07:00 2018-07-26
#Mail:xxxxx@xxx
#Author:Created by golden
#Function:This scripts function is ...
#Version:1.3
提示:可以配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件。
3)脚本中不用中文注释
尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰。
4)脚本以.sh为扩展名命名。
5)代码书写优秀习惯技巧
1、成对的符号内容尽量一次写出来,防止遗漏。
2、"[]"中括号两端要有空格,书写时即可留出空格[ ],然后在退格书写内容,先书写一对中括号,然后退一格,然后在输入两个空格,再退一格。
双中括号"[[]]"也是如此。
3、流程控制语句一次书写完,在添加内容。
if语句格式一次完成。
if 条件内容
then
内容
fi
for循环格式一次完成。
for
do
内容
done
6)通过缩进让代码更易读。
shell脚本简介的更多相关文章
- Linux Shell——bash shell 脚本简介
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...
- Shell脚本之一 Shell脚本简介
一.什么是shell? 我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面.Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境.当一个用户登录 Linux 之后 ...
- SHELL脚本--简介
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 脚本都以#!/bin/bash开头,“#”称为sharp,“! ...
- Linux Shell脚本简介
Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...
- Linux shell脚本学习(一)
一.shell脚本简介 shell脚本是用shell脚本语法将shell命令组织起来形成的文件形式.Shell脚本与Windows/Dos 下的批处理相似,主要为了将大量命令通过一个纯文本文件一次执行 ...
- Shell脚本编程(一):初识shell script
Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...
- Shell脚本的学习(一)
Shell脚本的学习(一) 一)代码式shell脚本简介 1.下载 Xshell 5 建一个文件夹 mkdri home/data ; 1)查看一个在data里建一个1.sh 查看是否建立成功. 2) ...
- shell脚本之编程基础介绍
1.shell脚本简介 1.1 shell是什么? shell是一个命令解释器,它在操作系统的最外层负责直接与用户对话,把用户的输入解释给操作系统:并处理各种各样的操作系统的输入,将结果输出到屏幕返回 ...
- Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言
Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言 现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上 ...
随机推荐
- 如何检查tensorflow环境是否能正常调用GPU
检查keras/tensorflow是否正常调用GPU代码 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os. ...
- Condtion type Z123 is mandatory!
user exit: MV45AFZZ->userexit_save_document_prepare ZI_EXIT_SD_CNEMS_SAVE_PREPARE ***Start of ins ...
- Java笔记Spring(六)
web.xml各节点加载顺序 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=&q ...
- HTML5 source标签:媒介元素定义媒介资源
HTML5 source标签是一种媒介元素(比如 <video> 和 <audio>)来定义媒介资源.<source> 标签允许您规定可替换的视频/音频文件供浏览器 ...
- k8s 命令补全
安装:apt-get install bash-completion source <(kubectl completion bash) echo "source <(kubec ...
- phoenix 报错:type org.apache.phoenix.schema.types.PhoenixArray is not supported
今天用phoenix报如下错误: 主要原因: hbase的表中某字段类型是array,phoenix目前不支持此类型 解决方法: 复制替换phoenix包的cursor文件 # Copyright 2 ...
- iOS下 UILabel 如何自动换行
背景: 相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理. 场景: 很多APP中评论,有的评论长,有的评论短,有的一行,有的多行. 下面以评论的实现为例来说说具体如何实现 ...
- VM下安装Windows 2008 R2服务器操作系统
打开虚拟机,双击双击新的虚拟机. 2 硬件兼容性选择workstation10.点击下一步. 3 选择我以后安装操作系统.点击继续 4 选择Microsoft windows,版本为windows s ...
- python module -- sys
sys模块主要是用于提供对python解释器相关的操作 http://www.cnblogs.com/pycode/p/sysos.html http://blog.csdn.net/pipisorr ...
- 【活动发布】捷微H5-微信新年砍价活动,开源发布了
活动名称: 微信新年砍价 适用项目: 捷微H5活动平台源码下载:http://yun.jeecg.org/pmall/detail/924D63E4F73B4387B75DE9B8545136C5 视 ...