Shell脚本基本概念及编程规范

一、Shell脚本概念

将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种shell控制语句以完成更复杂的操作

Shell脚本

将平时使用的各种linux命令按顺序保存到一个文本文件中,然后添加可执行权限,这个文件就成为一个shell脚本了

应用场景

重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行

shell作用

命令解释器,翻译官
介于系统内核及用户之间,负责解释命令行
在这里插入图片描述
用户的登录Shell ===>type 可以查看是内部还是外部指令
​ 登录后默认适合用的Shell程序,一般为/bin/bash

​ 不通Shell的内部指令、运行环境等会有所区别

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
......

编写第一个Shell脚本
编写脚本代码
​ 使用vim文本编辑器

​ 每行一条Linux命令,按执行顺序依次编写

[root@localhost ~]# vim first.sh 
#!/bin/bash
cd /boot/     #进入到boot目录
pwd      #显示当前所在的绝对路径
ls -lh vml*       #显示以vml开头的信息

赋予可执行权限
​ 使脚本具有可执行属性

[root@localhost ~]# chmod +x first.sh        #添加执行权限

执行脚本文件
​ 方法一:sh脚本文件路径(绝对路径与相对路径)———不需要可执行权限

[root@localhost ~]# sh first.sh

​ 方法二:./脚本文件路径(绝对路径与相对路径)———需要可执行权限

[root@localhost ~]# ./first.sh

​ 方法三:source脚本文件路径(绝对路径与相对路径)———不需要可执行权限,但会自动切入脚本环境

[root@localhost ~]# source first.sh

二、完整脚本格式构成

  • 脚本声明
  • 注释信息
  • 可执行语句

双引号里面的是字符串

[root@localhost ~]# vim /first.sh
#!/bin/bash
#This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*

三、重定向与管道操作

类型设备文件文件描述编号默认设备用途
标准输入/dev/stdin0键盘从该设备接收用户输入的数据
标准输出/dev/stdout1显示器通过该设备向用户输出数据
标准错误输出/dev/stderr2显示器通过该设备报告执行出错信息

重定向操作

在实际的linux系统维护中,可以改变输入,输出内容的方向,而不使用默认的标准输入,输出设备(键盘和显示器),这样操作称为重定向。
重定向操作

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
---------->>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息追加到指定的文件(覆盖原有内容)
-----------2>>将错误信息追加到指定的文件中
混合输出&>将标准输出、标准错误的内容保存到同一个文件中

例:重定向输入(免交互改密码)

[root@localhost ~]# vim pass.txt
666666
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd -- stdin lisi > pass.txt
更改用户lisi的密码
身份验证令牌yigengxin

重定向输出:">“用于覆盖,”>>"用于追加文件
例:uname -p > kernel.txt #显示cpu的类型覆盖到kernel.txt
uname -p >> kernel.txt #显示cpu的类型并追加到kernel.txt
错误重定向:"2>"用于覆盖,"2>>"用于追加文件
例:./first.sh 2> error.txt #显示first.sh的错误覆盖到kernel.txt
./first.sh 2>> kernel.txt #显示first.sh的错误并追加到kernel.txt

管道

管道操作符号"|"
​ 将左侧的命令输出结果,作为右侧命令的处理对象
cmd1 | cmd2 [… | cmdn]

[root@localhost ~]# grep "bash$" /etc/password
root:x:0:0:root:/root:/bin/bash
teacher:x:500:500:BENET Linux Teacher:/home/teacher:/bin/bash
[root@localhost ~]# grep "bash$" /etc/passwd | awd -F: '{print$1,$7}'
root /bin/bash
teacher /bin/bash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值