首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
书单
关于我们
首页 运维教程shell脚本shell脚本概述

shell脚本概述

前言

本系列为循序渐进学运维系列的shell脚本实战部分,从零带你学脚本。

shell脚本的概念

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的
在这里插入图片描述
静态语言:编译型语言 如:c 、 c++ 、 java,
动态语言:解释型语言 如: php 、 shell 、 python 、 perl

shell脚本的结构

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。我们可以了解为把原来我们学的基础命令,放入到一个文件中,然后通过这个程序文件去执行时,就是shell脚本或者说shell程序。

我们来看一个小例子:

[root@ecs-c13b ~]# vim test1.sh
[root@ecs-c13b ~]# chmod 777 test1.sh 
[root@ecs-c13b ~]# sh test1.sh 
hello world!

[root@ecs-c13b ~]# cat test1.sh 
#!/bin/bash
#"this is frist shell "
echo "hello world!"
mkdir /tmp/test1.txt
echo "hello" > test1.txt

1.开头:#!/bin/sh或#!/bin/bash
符号#!用来告诉系统,这个脚本需要什么解释器来执行,即使用哪一种 Shell。

2.注释:
以#开头的行表示注释

3.命令行的书写规则:
– 一行一条命令
– 若一行多个命令,用分号(;)分割
– 长命令可以使用反斜线字符(\)
– 要有相应的空格和注释,便于阅读

4. 执行shell脚本的方式:

1)作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

2)作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh

练习

1. 打印如下文本:

No Name Mark
1 zahangsan 58.52
2 李四 90.85

此处可以使用prinf

[root@ecs-c13b ~]# sh printf.sh 
 No    Name        Mark
 1      zhangsan   50.52
 2      lisi       90.85
[root@ecs-c13b ~]# cat printf.sh 
#!/bin/bash
printf " %-5s %-10s  %-4s\n " No Name    Mark
printf " %-5s %-10s %-4.2f\n" 1  zhangsan 50.522
printf " %-5s %-10s %-4.2f\n" 2  lisi 90.85

问题解析:
格式替换符: %s %c %d %f

%-5s : 格式为左对齐且宽度为5的字符串
%-4.2f,指定包含2位小数。

\n 为换行符

面试题

  1. shell脚本的执行方法

    答: 需要脚本有执行权限,如果没有需要使用命令chmod +x
    然后使用sh 执行

    1. #!/bin/bash中 #! 表示什么

    ! 读作 shebang,也念做 hashbang用于指定脚本的解释器

互联网老辛:
互联网编程手艺人,架构师,一个技术极客,一个布道者;高中起就有一个做讲师的梦想,工作十余载,终于有幸成为云计算讲师,持续钻研云计算和信息安全领域,并继续把自己所学所感真心传授给自己的学员,帮助更多想要进入IT行业的小伙伴。传道授业解惑,深知责任重大,每日战战兢兢,如履薄冰。苦心钻研,一直前行,不敢有丝毫懈怠。

本文链接:http://www.geekyunwei.com/2032.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部