第16篇 Shell脚本基础(一)

1.什么是shell?
shell是一个命令解释器. 是介于操作系统内核与用户之间的一个绝缘层。对于一个linux系统使用人员来说,shell是你驾驭类linux系统最基本的工具。所有的系统命令和工具再加上应用程序,对于shell脚本来说,都是可调用的。
shell扮演者操作系统内核和用户的中间人的角色,用户通过键入shell command,然后shell通过解析用户输入,然后将请求转发给操作系统的内核进行处理。

1)一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的。
2) 可以通过echo $SHELL查看当前使用的shell

2、为什么使用shell编程?
没有程序语言是完美的. 甚至没有一个唯一最好的语言, 只有对于特定目的, 比较适合和不适合的程序语言。对于任何想适当精通一些系统管理知识的人来说,掌握shell脚本知识都是最基本的。玩转linux,就得知道shell,shell命令是指挥linux的密码。
我们在linux系统上经常会遇到很多重复性的操作,而且手动操作的话,效率低,容易出错,浪费我们大量时间。这个时候不妨考虑使用shell脚本,
让脚本把我们从繁杂的工作中解脱出来,留下更多的时间享受生活,岂不很好。

小知识:
1)查询linux版本的命令 lsb_release -a
[email protected]:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty

2)查询bash版本的命令 echo $BASH_VERSION
[email protected]:~$ echo $BASH_VERSION
4.3.8(1)-release

3、shell命令是如何分层的?
shell命令分为以下五种:
• Alias(别名)
• Function(函数)
• Shell built in(内部命令)
• Keyword(关键字)
• File
可以用type查询shell命令的类型
type ls quote pwd do id

4、shell的编辑器
建议使用vim,作为linux的使用者,使用vim编辑器是必须的事情。
我使用的ubuntu系统(其它系统可能不一样),配置vim文件vimrc
sudo vi /etc/vim/vimrc

详细配置如下:
• showmode: Ensures we see when we are in insert mode
• nohlsearch: Does not highlight the words that we have searched for
• autoindent: We indent our code often; this allows us to return to the last
indent level rather than the start of a new line on each carriage return
• tabstop=4: Sets a tab to be four spaces
• expandtab: Converts tabs to spaces, which is useful when the file moves to
other systems
• syntax on: Note that this does not use the set command and is used to turn
on syntax highlighting
When these options are set, the $HOME/.vimrc file should look similar to this:
set showmode nohlsearch
set autoindent tabstop=4
set expandtab
syntax on

5、创建一个hello world的shell程序。
1) vi $HOME/bin/hello1.sh,加入下面语句
#!/bin/bash
echo "Hello world."
exit 0
2)chmod +x $HOME/bin/hello1.sh,添加可执行权限
3) hello1.sh,执行程序

6、Checking the exit status
shell有一个专门的变量可以查询上一条shell命令的返回值
hello1.sh
echo $?
我们会看到输出0.

7、shell的变量简介
大家都知道,编程会用到变量,这里必须说一下shell的变量,按使用目的分三种类型:
1)环境变量:BASH,PWD,SHELL,USER等(可以用set命令查询)
2)系统预置变量:
Bash定义了9个位置变量,分别是$1、$2、$3、$4…$9.脚本编写者在脚本中引用这9个变量,获取传递给脚本的参数。
$0:保存当前进程或脚本的名称。
$*或[email protected]:保存传递给脚本或进程的所有参数。
$$:当前进程或脚本的PID。
$!:后台运行的最后一个进程的PID号。
$?:用于返回上一条命令是否执行成功。如果成功执行,将返回数字0,否则返回非零数字(通常情况下都返回数字1)。
$#:用于保存脚本的参数个数。
3)用户自定义变量
【自定义变量的命名规则】
由于变量没有具体的数据类型,因此在定义变量时可以不必定义其类型,直接赋值即可使用。
在Shell中变量名称可以由大写字母、小写字母、下划线、数字等符号组成。
定义变量时,建议使用大写字母、下划线和数字组成变量名,以免引起不必要的误解。
变量对大小写敏感。

【变量的作用域】
变量的作用域是指变量的引用范围,也可以理解为变量在哪个区域起作用。Bash中的变量作用域规则可以归纳为以下两点:
除非使用了export命令,否则在脚本中定义的变量(包括函数中定义的变量)的作用域是整个脚本。
使用export定义的变量都是全局变量。全局变量可以在当前用户的任何脚本、命令中引用。
从以上两点可以看出,如果用户需要在脚本中定义全局变量,必须使用export命令。

时间: 2024-10-11 09:13:06

第16篇 Shell脚本基础(一)的相关文章

关于shell脚本基础编程第四篇

shell脚本基础编程第四篇本章主要内容:函数 函数 function:             function 名称 { 命令 ; } 或 name () { 命令 ; }           定义 shell 函数.               创建一个以 NAME 为名的 shell 函数.当作为一个简单的命令启用时,           NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令.当 NAME           被启用时,参数作为 $1...$n 被传递

linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)

Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要使用"_"下划线开头 最好做到见名知意 不能使用程序中的保留字,列如if,for等 1.3变量类型 字符型 数值型 整型浮点型 布尔型 条件是和否 #$echo $a 引用 abc 撤销 unset +(变量名)a 1.4变量操作 * 设置变量 * 引用变量 * 撤销变量 单引号和双

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

shell脚本基础学习(转)

看到别人的学习总结,觉得不错转了过来(转自TryFly) 一.shell脚本基础 ? ?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的.它的基本用途有: 1.自动化常用命令 2.执行系统管理和故障排除 3.创建简单的应用程序 4.处理文本或文件 ... 二.创建shell脚本 第一步.使用文本编辑器来创建文本文件 第一行必须包括shell 声明序列:#!

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

Shell脚本基础(一)

前言:随着Linux系统在企业中的应用越来越多,服务器的自动化管理也越来越变得重要,在一些复杂的Linux维护工作中,大量的重复性的输出和交互式操作不但费时费力,而且容易出错,所以Shell脚本,可以批量处理,自动化完成一系列维护工作,大大减轻管理员的负担. 一,Shell脚本基础知识1,编写第一个shell脚本1),vim first.sh[[email protected] ~]# mkdir /shell //创建一个shell目录[[email protected] ~]# vim fi

什么是Shell?Shell脚本基础知识详细介绍

这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Linux系统核心

GPT,LVM概念以及shell脚本基础

GPT,LVM概念以及shell脚本基础 描述GPT是什么,应该怎么使用1.GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的.相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制.分区指物理或逻辑磁盘上彼此连接的存储空间,但提供功能时就像物理上分隔的磁盘