shell脚本基础

shell

shell 是用户使用 Linux 的桥梁。shell 既是一种命令语言,又是一种程序设计语言。shell 是一个命令解释器,它的作用是解释执行用户的命令,用户输入一条命令,shell就解释执行一条,这种方式称为交互式(Interactive)。
shell 脚本(shell script),是指包含一些命令或声明,并符合一定格式的文本文件。用户首先写好一个shell脚本,脚本里有许多条命令,只要执行这个脚本,shell就会把脚本里的命令一次性的执行完成,而不是像每次需要这些命令时再一条一条的敲出来,这样既费时又费事。shell编写程序时,与Java编程是一样的,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。shell执行时,是从脚本中读取并执行命令,不需要调取源码。

shell变量

一、变量
全局配置路径:
/etc/profile
/etc/profile.d/*.sd
/etc/bashrc
/etc/profile.d/env.sh

所有的变量都由字符串组成,用一个字符串,替代更多更复杂的内容 。在变量使用命令时需要加 ' ' 或者$( ),而且变量操作相对比较简单,不像其他高级编程语言(如C/C++,Java等)那么复杂。在定义一个新的变量时,一般不予要提前进行声明,而是直接指定变量名称并赋予初始值(内容)即可。引用shell变量要用到$符号,加{}可以防止歧义。
变量命名法则:命名只能使用英文字母,数字和下划线,首个字符不能以数字开头,不能使用bash里的关键字(可用help命令查看保留关键字),使用统一的命名规则:驼峰命名法。
二、常用的shell变量
1、局部变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
查看所有的局部变量:set
2、环境变量:生效范围为当前shell进程及其子进程
查看所有的环境变量:env 、export、declare -x
变量声明、赋值设置方式为:
export 局部变量名
export 变量名=值
使用export可以将局部变量提升为环境变量,也可以将局部变量直接赋值给环境变量
简单实例如下:
shell脚本基础
3、只读和位置变量
只读变量:只能声明,不能修改和删除
readonly :可以将变量定义为只读变量,只读变量的值不能被改变
readonly -p:查看只读变量
位置变量:在脚本代码中调用通过命令行传递给脚本的参数
$1, $2, ...:对应第1、第2等参数,shift [n]换位置
$0: 命令本身
$※:传递给脚本的所有参数,全部参数合为一个字符串
$@: 传递给脚本的所有参数,每个参数为独立字符串
$#: 传递给脚本的参数的个数
$@ $※只在被双引号包起来的时候才会有差异
$?:返回上一条命令的执行状态,0为执行成功,非0为失败
注:※这个符号是个星号,因为某些原因显示不了,只好用这个符号代替。
三、删除变量
unset :取消变量的定义,即可以删除变量。变量被删除后不能再次使用,unset 命令不能删除只读变量
四、使用变量
变量的用法有很多,只列出两种举例。
1、使用一个定义过的变量,只要在变量名前面加$符号即可
shell脚本基础
有时,变量名是需要加花括号的,加花括号是为了帮助解释器识别变量的边界,如果不给变量加花括号,解释器就会把命令当成两个个变量,代码执行结果不是我们想要的效果。
2、数值变量的运算
常用的几种运算符:
+:加法计算
-:减法计算
* :乘法计算,注意不能仅用 " " 符号,否则将被当成文件通配符。
/:除法计算
%:求模运算,又称为取余运算,用来计算数值相处后的余数
shell脚本基础

shell执行脚本

第一步:使用vim命令,输入文件路径,脚本命名为createsh.sh,打开文本编辑器创建文本文件
1、开头
点击键盘的" i " ,进入插入编辑模式
第一行必须包含shell声明序列:#!
#!/bin/bash
"#!" 学术术语叫shabang,/bin/bash是shell解释器,作用是解释这个脚本是调用哪门语言编写的。
shell脚本开头注释用"#"表示,注释的作用是解释用途,文本里有许多这样的注释。在这里,是在告诉我们一下脚本的信息,这个在shell脚本里很重要。
开头注释包括以下几部分:
1、shabang
2、程序名,避免更改文件名时无法找到正确的文件
3、版本号
4、更改后的时间
5、作者相关信息
6、该程序的作用和注意事项
7、各版本的更新简要说明
开头注释只要编写需求的部分即可。
实例如下:
shell脚本基础
chmod +x $1:赋予脚本权限
echo >> $1 :重定向,执行命令时创建指定的新文件
2、退出脚本
点击Esc,再" shift+: "进入退出模式,输入以下命令:
q :只退出不保存
q! :强制退出不保存
w :保存
w! :强制保存
wq或x :保存并退出
wq!或x! :强制保存并退出
注意:w! 和 wq! 仅限root及文件的owner
第二步:运行脚本
1、使用chmod命令,给予脚本执行权限,在命令行上输入脚本的绝对或相对路径
shell脚本基础
2、检测脚本中的语法错误并调试执行,主要是检查脚本有没有错误。
bash -n /root/bin/createsh.sh
bash -x /root/bin/createsh.sh
shell脚本基础
3、执行脚本,本脚本的功能是为以后编写脚本做准备,只需在命令提示符输入/root/bin/createsh.sh backup.sh,执行后,会在/root/bin下生成一个backup.sh的文件,其中自带开头注释内容,然后自动用vim打开该文件,且光标直接位于非注释部分下的新行。
vim backup.sh : 打开/root/bin/backup.sh脚本
shell脚本基础
最后,注意命名时要统一,文件名都要以.sh结尾,方便识别,变量名字要有含义,不要拼错等。

shell实例

1、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
shell脚本基础
shell脚本基础
2、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
主机名: hostname
ipv4地址: ifconfig
操作系统版本: /etc/redhat-release Centos 6.9 或 Centos 7.5
内核版本:uname -r
CPU型号:lscpu
内存大小: MB free
硬盘大小: fdisk -l /dev/sda
shell脚本基础
shell脚本基础

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章