善用工具(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

原文地址:https://www.cnblogs.com/newbie27/p/11181469.html

时间: 2024-10-16 19:15:33

善用工具(2)--Shell脚本的相关文章

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

第三周、文本处理工具、shell脚本编程

文本处理工具 1.cut -d指定分隔符.比如-d: -d' ' -f指定取第几列.比如-f1,3 --output-delimiter指定显示的分隔符 tr -s压缩 -d删除 -c除了 2.使用tr和cut取磁盘的百分比 [[email protected] data]# df -h | tr -s ' ' | cut -d' ' -f5 | tr -dc '[0-9]\n' 0 0 5 0 32 67 32 0 3.取IP [[email protected] data]# ifconfi

Linux 启动、停止、重启tomcat工具(Shell脚本)

1.   启动 #!/bin/bash pids=`ps -ef | grep java | grep -w tomcat | awk '{print $2}'` #pids=`ps -ef | grep -w tomcat | grep -v "grep" | awk '{print $2}'` if test -z $pids then bash /root/soft/tomcat/bin/startup.sh echo -e "Start Finished!\n&quo

bash特性以及shell脚本简介

bash的特性之多命令执行的逻辑关系:1.命令替换COMMAND1 $(COMMAND2)2.管道COMMAND1 | COMMAND2 | COMMAND3 ...3.顺序执行结构COMMAND1 ; COMMAND2 ; COMMAND3 ...4.选择执行结构:如果...那么...要么...要么...逻辑运算:与:逻辑乘法,1--真,0--假,&&,双目操作符1 && 1 = 11 && 0 = 00 && 1 = 00 &&a

Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具

shell脚本中if与case使用 查找文件locate与find的使用 压缩,解压及归档工具 执行的循序  顺序执行  选择执行  循环执行 条件语句if if只是一个有含义的词,不能单独作为指令使用. 单分支 if 条件判断:then 条件为真的分支代码 fi 双分支 if 判断条件:then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if 判断条件1, if-true elif 判断条件2,then if-ture elif 判断条件3,then if-ture ..

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

10个工具让你的 shell 脚本更强大

10个工具让你的 shell 脚本更强大 很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位 置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本.我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的. 1. notify-send 命令 这个命令可以让你通过通知进程发送一个桌面通知给用户.这可以用来向

<zz>linux运维自动化shell脚本小工具

from http://www.cnblogs.com/wang-li/p/5728461.html linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU #Sun Jul 31 17:25:41 CST 2016 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/hom