善用工具(2)--Shell脚本
作者:互联网
一、Shell脚本的基本功能及使用
1、Shell 是什么?
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
2、Shell 如何运行的?
Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,本教程关注的是 Bash(Bourne Again Shell),Bash 是大多数Linux 系统默认的 Shell。
3 、编写一个shell脚本
打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
输入一些代码,内容如下:
#!/bin/bash echo "Hello World !"
注释: 第一行: #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 第二行: echo 命令用于向窗口输出文本。
4、运行 Shell 脚本有两种方法:
(1)test.sh 作为可执行文件直接执行(注意给test.sh文件增加“执行”权限)
将上面的代码保存为 test.sh,并 cd 到相应的目录,直接执行脚本"./test.sh"命令
./test.sh #执行脚本文件tesh.sh
注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
(2)执行解释器,将test.sh作为解释器参数运行
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名。
注:这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
/bin/sh test.sh /bin/bash test.sh
五、菜鸟教程--Shell教程
Shell既然是一种编程语言,那么理所当然地支持定义变量、定义数组、接受参数传递、进行流程控制等等功能。而shell之所以说强大,是由于你可以在shell脚本中编写Linux系统支持的所有命令(包括Linux自带的命令,以及用户安装的命令,如:java、nginx、docker等),因此,你可以使用shell脚本来编写“自己的指令集”,能大大简化重复性操作指令的输入。
对于Shell编程语言的基本语法,网络上有很多教程,小六在此不再赘述,在此仅留下菜鸟网站的Shell教程,供小白参考学习。
推荐阅读: 菜鸟教程--Shell教程
二、小六使用Shell脚本的一些实践
1、执行脚本,登录我的远程服务器
近期,小六在学习分布式技术,于是将自己的两台旧电脑做成了服务器,由于经常要通过“ssh”来远程访问服务器,于是所幸编写了两个脚本"a-server.sh"、"b-server.sh",只需要执行对应的shell脚步,就可以自动登录到对应的远程服务器,节省了重复性的"ssh -l *** -o ServerAliveInterval=30 ***"的输入,一时令小六暗暗的小满足了一把(没办法,小六是一个很容易满足的人好吧!)。
2、编写my-docker.sh脚步,接收外部的参数,根据参数动态执行"docker"命令
近期,小六在学习docker自动化部署,由于要经常性的“启动docker容器”、“进入docker容器”、“查看docker容器的状态”等等。刚开始时,小六都是手输一个个“docker”命令,因此输入命令的动作实在是耗费了不少时间。后来想起Shell脚步,于是尝试通过shell脚本来简化命令的输入动作,具体步骤如下:
- 首先,将"docker"命令集成到"my-docker.sh"文件中。
- 然后,将"my-docker.sh"的父目录,添加到PATH变量中。
- 最后,在需要执行命令时,输入"my-docker.sh 参数1 参数2"来执行对应的命令
$ my-docker.sh ps #执行命令:docker ps,显示docker运行的容器列表信息 $ my-docker.sh exec-n #进入run-nginx容器 $ my-docker.sh exec run-nginx #进入run-nginx容器
转载说明:本篇博客的“第一节”转载自“菜鸟教程”网站。
原文标题:Shell教程|菜鸟教程 原文地址:https://www.runoob.com/linux/linux-shell.html
标签:脚本,shell,Shell,善用,sh,test,docker 来源: https://www.cnblogs.com/newbie27/p/11181469.html