小鸟初学Shell编程(二)编写简单的Shell脚本
Shell脚本
编写Python、PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将多个Linux命令组合保存成一个脚本文件,可直接给其他人使用。
组合命令
进入一个目录,查看目录的文件,这个过程分别需要执行两条命令,分别是cd 和ls。
分开执行两个命令的形式如下:
[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脚本的更多相关文章
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...
- 小鸟初学Shell编程(一)认识Shell
开篇介绍 Linux里非常的有用的一个功能,这个功能就叫Shell脚本. Shell脚本在我日常开发工作里也占了非常重要的角色,项目中一些简单的工作我们都可以使用Shell脚本来完成,比如定时删除日志 ...
- shell编程:定义简单标准命令集
shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...
- shell编程(二)
case判断 前面了解了shell编程的if判断,其实除了if判断,还有case判断. case语法: case VAR in case1) command1 ;; case2) command2 ; ...
- 【shell编程基础0】bash shell编程的基本配置
前面一篇“shell编程之变量篇”主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash shell下的一些基本配 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- 编写简单的辅助脚本来在 Google 表格上记账
我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...
- shell编程中用户输入处理(shell 04)
shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...
随机推荐
- 深入浅出js实现继承的7种方式
给大家介绍7中js继承的方法 有些人认为JavaScript并不是真正的面向对象语言,在经典的面向对象语言中,您可能倾向于定义类对象,然后您可以简单地定义哪些类继承哪些类(参考C++ inherita ...
- 关于在 ASP.NET 的 Global.asax 中 Application_Error 方法内,设置跳转到自定义错误页无效的问题
转自:https://www.cnblogs.com/OpenCoder/p/5070645.html 在 Global.asax 中的 Application_Error 方法中,使用 Respon ...
- Xcode打印如下错误:Unbalanced calls to begin/end appearance transitions 解决办法
今天在做自己的项目时遇到如下错误,项目运行以后,打印台打印如下: Unbalanced calls to begin/end appearance transitions for <HomeVi ...
- Html学习之四(页面布局)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【Spring JDBC】JdbcTemplate(三)
传统Jdbc API与Spring jdbcTemplate比较 //JDBC API Statement statement = conn.createStatement(); ResultSet ...
- vue中keepAlive的使用
在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态:vue里提供了keep-alive组件用来缓存状态.可以用以下几种方案 ...
- ionic4 组件调用的坑
我们再开发过程中很多模块做成组件,那么调用的时候则需把module.ts中的引入去掉,如下红色框框:
- Java HashMap用法
为了做题用Java语法替代C++map的常用语法,记录一下,剖析原理以后再补上. 1.import java.util.HashMap;//导入; 2.HashMap<K, V> map= ...
- 【ECNU3510】燃烧吧,室友!(模拟)
点此看题面 大致题意: 给你一个只含\(C,H,O\)的化学式,问需要几\(mol\)的氧气才能使其完全燃烧成\(CO_2\)和\(H_2O\). 模拟+化学 首先,我们模拟求出化学式中\(C,H,O ...
- ORB-SLAM2 地图加载
一.前面说了ORB-SLAM地图的保存部分,继续说地图如何加载,因为加载部分相比保存要稍微复杂一些,所以要多说一点. 二.ORB-SLAM2地图加载构成 首先同样是在头文件中声明加载函数,包含地图点和 ...
