shell编程之编程规范和变量

目录

前言

一、shell介绍

二、shell脚本简介

1、shell脚本概念

2、shell脚本使用环境

3、shell脚本编写规范

 4、shell脚本执行方式

5、shell脚本具有可执行权限

三、重定向与管道

1、管道操作

2、重定向

⑴、交互式硬件设备

⑵、重定向操作

⑶、错误重定向的两个作用

四、变量与赋值

1、shell变量的作用

2、变量赋值的特殊操作

⑴、双引号

⑵、单引号

⑷、交互赋值定义变量read命令

3、查看、引用变量

4、变量作用范围

5、数值变量的运算

⑴、使用expr进行运算

⑵、使用let进行运算

⑶、使用bc进行运算

 五、常见shell变量的类型

1、自定义变量

2、环境变量

⑴、简介

⑵、设置可执行程序

3、只读变量

4、位置变量

5、预定义变量

总结:


前言

       Linux维护时,会有大量重复性的输入和交互操作,费时费力,而且容易出错,那么编写一个恰到好处的shell脚本,

可以为管理员减轻压力。

一、shell介绍

       Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,负责解释命令行,充当了一个“命令

解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结

果。常见的Shell 解释器程序有很多种,使用不同的Shell时,其内部指令、命令行提示符等方面会存在一些区别。通

过/etc/shells文件可以了解当前系统所支持的 She11 脚本种类。

 

[root@kang ~]# cat /etc/shells 
/bin/sh    #是bash命令的软链接(已经被/bin/bash所替换)
/bin/bash   #基准于GNU的框架下发展出的She1l 
/usr/bin/sh   #已经被bash所替换。 
/usr/bin/bash   #centos和redhat系统默认使用bash shell 
16/bin/tcshcsh的增强版,与csh完全兼容整合了csh,提供更多的功能
/bin/tcsh    #已经被/bin/bash所替换(整合C shell提供更多的功能)
注:nologin奇怪的shel1,这个she11可以让用户无法登录主机。
bash(/bin/bash)是目前大多数Linux版本采用的默认Shell

       系统上合法的shell要写入/etc/shells这个文件,因为系统某些服务在运行过程中,会去检查用户能够使用的shells,

而这些shel1的查询就是借由/etc/she11s这个文件。

        流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。目前大多数Linux系统默认使

用的是bash shell,默认登陆shell是/bin/bash,这个shell是针对用户而言的,可以查看/etc/passwd里面的最后的字段使

用的是哪个shell,如果想要修改可以用chmod -s或者chsh -s来重新指定。

二、shell脚本简介

1、shell脚本概念

       shell脚本(Shell Script)就是将要执行的命令按顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执

行的一个程序文件。

2、shell脚本使用环境

        ◆需要完成大量复杂、重复性的工作时;

        ◆交互性任务;

        ◆批量事务处理;

        ◆服务运行状态监控;

        ◆定时任务执行等;

        ◆自动化完成软件的安装部署,如安装部署LAMP架构服务;

        ◆自动化完成系统的管理,如批量添加用户;

        ◆自动化完成备份,如数据库定时备份;

        ◆自动化的分析处理,如网站访问量。

3、shell脚本编写规范

       一个合格的shell脚本程序应该遵循标准的脚本结构,而且能够输出友好的提示信息、更加容易读懂,以及必要的注

释文字。

       ◆脚本声明:#!/bin/bash

       ◆注释信息: #命令说明

       ◆可执行语句:正确格式的命令

 4、shell脚本执行方式

       ①、不需要执行权限就可以执行脚本文件的三种方式:sh、bash和source

[root@kang mytext]# bash first.sh #新开一个shell环境运行脚本
大家好!大家好!! 
[root@kang mytext]# source first.sh  #当前环境运行脚本(与点相同,也可以用“.”执行)
大家好!大家好! 
[root@kang mytext]# sh first.sh  #新开一个shell环境运行脚本
大家好!大家好! 
[root@kang mytext]# bash first.sh     ##bash和sh的区别如下
first.sh:行10: +: 语法错误: 期待操作数 (错误符号是 "+")
xxx
/boot
-rwxr-xr-x. 1 root root 5.7M 8月  11 04:25 vmlinuz-0-rescue-9d6459c912ec485fb9941cc4a4afb448
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@kang mytext]# sh first.sh 
first.sh:行10: +: 语法错误: 期待操作数 (错误符号是 "+")
[root@kang mytext]# bash -x first.sh  #可以逐行执行排错
first.sh:行10: +: 语法错误: 期待操作数 (错误符号是 "+")
+ echo xxx
xxx
[root@kang mytext]# bash -n first.sh  #可以指出错误地方

        注意:当执行脚本遇到错误时,bash遇到错误会继续将整个脚本执行;而sh遇到错误会结束运行脚本。

②、当前路径与相对路径下执行脚本需要更改文件权限

[root@kang mytext]# /mytext/first.sh 
大家好!大家好! 
[root@kang mytext]# ./first.sh 
大家好!大家好!

5、shell脚本具有可执行权限

[root@kang mytext]# chmod +x first.sh  #给这个脚本文件添加x权限
[root@kang mytext]# chmod -x first.sh   #给这个脚本文件取消x权限

三、重定向与管道

       Shell环境中的两个I/O操作:管道 、重定向。

1、管道操作

        管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号”|“左侧的命令输出的结果,将作为右侧

命令的输入(处理对象),同一行命令中可以使用多个管道。在She11脚本应用中,管道操作通常用来过滤所需要的关键信

息。

[root@kang ~]# grep "/bin/bash$" /etc/passwd | awk -F: '{print $1,$7}'
root /bin/bash
kl /bin/bash
[root@kang ~]# #“-F”用来指定分隔符号(未指定时,默认以空格或制表符分隔);
               #awk命令作用是以冒号“:”作为分隔,输出第一行和第七行区域的字符串。
[root@kang ~]# df -hT | grep "/$" | awk '{print $6}'
23%
[root@kang ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs        36G  7.9G   28G   23% /
devtmpfs       devtmpfs  897M     0  897M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.0M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda1      xfs       950M  179M  772M   19% /boot
tmpfs          tmpfs     183M   36K  183M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /mnt
[root@kang ~]#

2、重定向

       重定向:在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘

和显示器),这种操作称为“重定向”。

⑴、交互式硬件设备

用户通过操作系统处理信息的过程中,包括以下几类交互设备文件。

        ◆标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数

据。

        ◆标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。

        ◆标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文

件。

        注:从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会

将错误信息反馈到屏幕上。

交互式硬件设备

类型

设备文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值