LinuxShell脚本——认识Shell脚本
LinuxShell脚本——认识Shell脚本
摘要:本文主要介绍了Shell脚本的一些基本知识。
什么是Shell脚本
shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,达到所想要的处理目的。
shell脚本就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell脚本更是提供了数组、循环、条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序。
基本结构
#!/bin/bash
这句话的作用是标明我以下写的脚本使用的是BASH语法,只要写的是基于BASH的Shell脚本都应该这样开头。
在Linux中默认的Shell环境就是BASH,所以在Linux里面不加这一句也可以运行。如果把脚本放在默认环境不是BASH的环境中运行,又或者编写脚本的不是纯BASH语言,而是嵌入了其他语言,那么这个脚本就不能正确执行了。所以Shell脚本都必须以“#!/bin/bash”开头。
注释
在Shell脚本中,除“#!/bin/bash”这行外,其他行只要以“#”开头的都是注释。
程序的主体
Linux的命令可以直接在脚本中执行。
执行脚本
赋予执行权限,直接运行
这种方法是最常用的Shell脚本运行方法,也最为直接简单。就是赋予执行权限之后,直接运行。当然,运行时可以使用绝对路径,也可以使用相对路径。
如果将shell.sh放在PATH指定的目录内,这样就可以像Linux系统命令一样,不用指定路径直接运行了。
赋予执行权限:
[root@localhost sh]# chmod shell.sh
使用绝对路径执行:
[root@localhost sh]# /root/sh/shell.sh
使用相对路径执行:
[root@localhost sh]# ./shell.sh
通过bash命令调用运行脚本
这种方法的意思是直接使用bash或者sh去解释脚本中的内容,所以这个脚本也可以正常运行。使用这种方法运行脚本,甚至不需要脚本文件有“执行”权限,只要拥有“读”权就可以运行了。
因为/bin/sh其实就是/bin/bash的一个链接,使用 sh shell.sh 就是告诉系统想要直接以bash的功能来执行shell.sh。
使用bash命令执行:
[root@localhost sh]# bash shell.sh
[root@localhost sh]# sh shell.sh
使用source命令执行
source命令或者“.”命令可以读入脚本并执行脚本,即在当前Shell环境中加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。
该命令主要用于让重新配置的环境变量配置文件强制生效。
使用source命令执行:
[root@localhost sh]# . shell.sh
[root@localhost sh]# source shell.sh
编写一个脚本并执行
编写脚本
使用vim命令创建并修改脚本文件:
[root@localhost ~]# vim test.sh
在vim编辑器里输入脚本内容并保存:
#!/bin/bash
echo "Hello World"
执行脚本
使用sh命令执行脚本:
[root@localhost ~]# sh test.sh
Hello Word
[root@localhost ~]#
LinuxShell脚本——认识Shell脚本的更多相关文章
- Centos 环境一键部署脚本(shell脚本)
谨以此文纪念吊炸天的Centos环境一键部署方案的新鲜出炉 辛苦大半年,产品准备上线了,BOSS亲自体验安装部署,看着超过200+页的安装文档直接崩溃了(需要部署23个基础服务),经历了超过3个小时的 ...
- 【shell脚本】shell脚本实现的 函数差集查找
文本地址 点击关注微信公众号 wenyuqinghuai 分享提纲: 1. 问题背景 2. 代码实现 1.问题背景 在做公司的测试的自动化测试时,覆盖了一些开发代码的函数,但是那些还没有做,使用一个函 ...
- Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
- gitlab webhook php exec 调用 shell 脚本。shell 脚本中调用 git pull 命令无法执行。
情况如下: 我在ubuntu server 14.04 上面安装了gitlab,来托管项目代码.然后想通过gitlab的web hook 功能来做测试服务器代码自动化更新代码功能.现在遇到一个问题:就 ...
- [Android]Recovery调用外部Shell脚本,Shell脚本使用ui_print方法
busybox_bin=/sbin/busybox # 获取PIPE get_outfd(){ | $busybox_bin grep -q 'pipe'; then else local all_p ...
- Shell脚本之一 Shell脚本简介
一.什么是shell? 我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面.Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境.当一个用户登录 Linux 之后 ...
- 分享7个shell脚本实例--shell脚本练习必备
概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 1.监测Nginx访问日志502情况,并做相应动作 ...
- shell脚本(2)-shell脚本语法
一.如何抒写shell脚本 1.shell脚本的命名 名字要有意义,不要以a.b.c.1.2.3这种方式命令,建议以sh结尾,在30个字节内,例如:check_memory.sh 2.shell脚本 ...
- shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量
随机推荐
- 易优CMS:channel的基础用法
[基础用法] 名称:channel 功能:易优常用标记,可以循环嵌套标签.通常用于网站导航以获取站点栏目信息,方便网站会员分类浏览整站信息 语法: {eyou:channel type='top' r ...
- ETCD:文档
原文地址:Documentation 文档 etcd是一个分布式键值对存储,被设计为可靠的,快速的保存并提供对关键数据的访问.通过分布式锁,领导选举和写屏障使能分布式一致性.一个etcd集群旨在实现高 ...
- spring源码分析6: ApplicationContext的初始化与BeanDefinition的搜集入库
先前几篇都是概念的讲解:回顾下 BeanDefinition 是物料 Bean是成品 BeanFactory是仓库,存储物料与成品 ApplicationContext初始化搜集物料入库,触发生产线, ...
- Angular ElementRef详解
一.为什么要用ElementRef Angular 的口号是 - "一套框架,多种平台.同时适用手机与桌面 (One framework.Mobile & desktop.)&quo ...
- git upstream
git remote add upstream https://github.com/SchedMD/slurm git fetch upstream git rebase upstream/mast ...
- JS&Jquery基础之对象和数组以及类型转换
一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...
- Paper慢慢读 - AB实验人群定向 Recursive Partitioning for Heterogeneous Casual Effects
这篇是treatment effect估计相关的论文系列第一篇所以会啰嗦一点多给出点背景. 论文 Athey, S., and Imbens, G. 2016. Recursive partition ...
- jango rest-framework page_size更新
老项目是三年前写的, 这周的新项目要用上DRF的分页功能时,发现老的写法无效了. 于是看了一些文档,原来写法变了. https://blog.csdn.net/dqchouyang/article/d ...
- UVA 503 Parallelepiped walk
https://vjudge.net/problem/UVA-503 题目 给出一个长方体和长方体上两点的坐标,求两点的沿着长方体表面走的最小距离 题解 沿着表面走就是在展开图上面走,如果分类讨论就需 ...
- Java流程控制之顺序结构
概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序 ...