Shell脚本

编写Python、PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将多个Linux命令组合保存成一个脚本文件,可直接给其他人使用。


组合命令

进入一个目录,查看目录的文件,这个过程分别需要执行两条命令,分别是cdls

分开执行两个命令的形式如下:

[root@lincoding usr]# cd /usr/
[root@lincoding usr]#
[root@lincoding usr]# ls
bin etc games include lib lib64 libexec local sbin share src tmp
[root@lincoding usr]#

我们可以用分号;,来将两个命令组合在起来,顺序执行,那么一起执行的形式如下:

[root@lincoding usr]# cd /usr/ ; ls
bin etc games include lib lib64 libexec local sbin share src tmp
[root@lincoding usr]#

编写Shell脚本流程

那么如果这两个命令经常使用或者提供给其他人使用,我们可以把这两个命令用Shell脚本文件保存起来。

01 建立Shell脚本文件

使用bash的Shell通常以.sh后缀

[root@lincoding home]# touch test.sh

02 编写Shell脚本

通过vi命令编写test.sh脚本,内容如下:

cd /usr/
ls

需要注意的是Shell脚本里每条语句后面不用加分号;,每条命令采用换行的方式,执行Shell脚本的时候就会顺序执行。

03 给予Shell脚本执行权限

因为建立文件的时候,默认是没有执行权限的,我们需要给予脚本执行权限,脚本才可以运行

[root@lincoding home]# chmod u+x test.sh

查看脚本权限

[root@lincoding home]# ls -l test.sh
-rwxr--r--. 1 root root 13 Sep 12 09:10 test.sh

04 执行Shell脚本

用bash执行Shell脚本,执行的结果就和我们在外边单行组合命令执行的结果是一样的

[root@lincoding home]# bash test.sh
bin etc games include lib lib64 libexec local sbin share src tmp

声明Shell解释器

那么这里还要考虑一下其他的问题,假设要把这个Shell脚本在与不同的系统下运行的时候就会有问题,如果系统默认的Shell不是bash,执行这个Shell脚本可能会失败,因为可能会有bash的一些Shell特性在里边。

那么我们可以在Shell脚本文件的第一行声明它使用的是哪个Shell,书写的格式如下:

#!/bin/bash

这样写的好处是,执行Shell脚本的时候,会自动告诉系统用bash解释器的Shell来执行脚本。

我们将刚才的test.sh脚本修改后如下:

#!/bin/bash
cd /usr/
ls

那么声明使用哪个Shell解释器后,我们执行脚本的方式就可以变的很简单了

[root@lincoding home]# ./test.sh
bin etc games include lib lib64 libexec local sbin share src tmp

小结

我们编写Shell脚本时,第一行要以#!/bin/bash声明Shell解释器,编写完后要给予Shell执行权限,接着就可以执行运行了。


小鸟初学Shell编程(二)编写简单的Shell脚本的更多相关文章

  1. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  2. ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)

    ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...

  3. 小鸟初学Shell编程(一)认识Shell

    开篇介绍 Linux里非常的有用的一个功能,这个功能就叫Shell脚本. Shell脚本在我日常开发工作里也占了非常重要的角色,项目中一些简单的工作我们都可以使用Shell脚本来完成,比如定时删除日志 ...

  4. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  5. shell编程(二)

    case判断 前面了解了shell编程的if判断,其实除了if判断,还有case判断. case语法: case VAR in case1) command1 ;; case2) command2 ; ...

  6. 【shell编程基础0】bash shell编程的基本配置

    前面一篇“shell编程之变量篇”主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash shell下的一些基本配 ...

  7. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  8. 编写简单的辅助脚本来在 Google 表格上记账

    我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...

  9. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

随机推荐

  1. HTTP协议中的chunked编码解析

    \r\n\r\n"了. chunked编码很简单,是不是? 不过,在协议还原的实现过程中,如何高效高性能地对chunked进行解码,是一件值得挑战的事哦.毕竟,HTTP的流量占比不小的. 长 ...

  2. 有趣的bug——Java静态变量的循环依赖

    背景 是的,标题没有错误,不是Spring Bean的循环依赖,而是静态变量之间的循环依赖. 近期的项目均是简单的Maven项目,通过K8S部署在阿里云上,其配置文件读取规则如下所示: (1) 优先读 ...

  3. nginx 的 proxy_cache 缓存配置

    开头:某个项目涉及到 视频切片下载到本地,然后提供服务给客户端.一个视频有多个文件,存储在本地路径下.当客户端请求的视频在本地没有就会回源, 回源拿到的视频文件再返回给客户端,同时在本地缓存一份,提供 ...

  4. 爬虫---lxml简单操作

    前几篇写了一些Beautiful Soup的一些简单操作,也拿出来了一些实例进行实践,今天引入一个新的python库lxmt,lxmt也可以完成数据的爬取哦 什么是lxml lxml是python的一 ...

  5. 2017年蓝桥杯B组C/C++决赛题解

    2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的 ...

  6. 第十一周小组Scrum会议

    会议照片 本周会议内 回顾上一周的内容 总结上一轮的得失: 我们在第一轮中,并没有做出什么东西,为此我们痛定思痛,制定了计划,确定第二轮迭代的目标: 1. 实现小程序与后台代码的交互 2. 将检索书籍 ...

  7. Hyper-V与VirtualBox或VMware虚拟机软件冲突的解决方法(VirtualBox只能创建32位虚拟机)

    Hyper-V与VirtualBox或VMware虚拟机软件冲突的解决方法 Hyper-V是微软的虚拟化软件,功能类似VirtualBox.VMware,可以用来创建虚拟机. 虚拟化软件都是基于CPU ...

  8. [转] 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式

    原文地址:https://www.cnblogs.com/tianshifu/p/8127837.html 前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少 ...

  9. 判断101-200之间有多少个素数,并输出所有素数,方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

    <?php$sum=0;for($i=101;$i<=200;$i++){    for($j=2;$j<=sqrt($i);$j++)    {       if($i%$j==0 ...

  10. luoguP2824 [HEOI2016/TJOI2016]排序(二分答案做法)

    题意 这题的思路实在巧妙. 首先我们肯定无法对区间进行sort,那么考虑如何使得sort简化. 问:如果给的序列是一个0-1序列,让你区间排序,那么怎么做? 答:建一颗线段树维护sum,求出当前区间中 ...