脚本的简单介绍

*此文写给刚刚入门Linux学习脚本的小白,文中为方便理解专业词用的不多,若要确切的系统的学习某些概念,还需专门学习,本文仅供参考

在没接触过脚本之前,脚本这个词只在Windows中某些软件出问题了,会提示”当前脚本运行出错“之类的词,当然了,作为一个只会用电脑打英雄联盟和Linux只会基本命令的小白,此时此刻对脚本依旧没什么太大的概念,不过即使如此菜的抠脚,我依旧得用我这智商为负的脑子去死磕这个叫做脚本的东西。

是的没错!在Linux中,会敲命令就会写脚本。运行脚本的是一个叫做“解释器”的东西Linux中默认的解释器是bashshell,还有很多解释器比如Python。会写脚本的话,不说别的,至少不用敲那么多又臭又长的命令了,都丢进脚本文件,执行脚本文件就一切OK了,当然了,看到这篇帖子的各位仁兄应该也学过基本命令了比如最基本的ls , ifconfig ,vim文本编辑器, 以及grep ,egrep 等等基本的文本处理命令,很高兴的告诉你,刚开始学脚本,这些就够了 (大神路过此贴请轻喷蟹蟹)

学IT的同学用腿想都知道,每学一样新语言都从”HelloWorld”开始的,这里也一样

helloworld入门

#!bin/bash

# This is first scriptof“hello world”

echo “hello world”

#!/bin/bash 是脚本调用的解释器名称,(整个脚本除了第一行的#除外,其他行的#都为注释,)

#!/ This is first script of "hello world" 是脚本注释,就是这一行的内容不会执行

打开vim编辑器,照着上面的命令字符敲进去,保存退出并赋予刚刚编写的脚本执行权限

[root@centos7 ~]# chmod a+x helloworld.sh

当脚本有了执行权限,就可以运行了

[root@centos7 ~]# ./helloworld.sh

hello world

[root@centos7 ~]#

类似的,刚开始学习嘛,你可以把好多毫不相干的命令都丢进脚本文件里面,执行脚本文件的时候也会把你在脚本文件里面写的命令依次执行并显示在终端,就像下图这样:

打开vim编辑器把上图中的命令敲进去,然后给脚本文件一个执行权限如下图:

执行脚本文件如下:

[root@centos7 ~]# ./test.sh

执行结果如下:

不是很难对吧?

太简单?

好吧,那就加点参数吧

相信能看到这里的各位同学也应该知道什么是参数了,小弟在此就不再赘述了

带参数的脚本

先写一个执行需要参数的脚本吧如下:

重点解释的是$这个东西,不光是美元,还是在Shell脚本中很常见又很关键的一个字符

$1代表位置参数,可以解释为执行脚本文件的同时在后面打一个参数,具体参数以脚本中要求的为准

$(XXX)这个格式为取变量值,图中的意思则为取$(cat $1 |wc -l)的值并赋值给lines

echo是用来输出信息的,大体上应该也能看懂吧,就是取$(XXX)的变量并赋值,然后输出这个值

执行步骤和执行结果如下,注意执行脚本的同时后面的参数啊:

不用纠结$东西,学好了这东西有的是

参数过滤

上面讲到了参数,不过很显然,不是随便写一个参数就会有输出结果的,比如我想找一个文件有多少行,我在执行脚本的时候后面跟一个IP地址肯定行,不懂的会问cat不是可以查看然后直接输出嘛之类的,cat是用来查看文件的,后面跟的参数是个文件,不是你输入什么就能看到什么的,有这个疑问的同学请转弯回去补补基础吧,不信我给你执行以下cat+IP你看看:

很明显吧,好了不多说,具体看下参数怎么过滤

grep,egrep ,以及cut ,tr等文本处理工具

就拿IP为例,我想测试一个IP是否可以ping通,前提是要判断IP是否符合IP的条件,比如1192.18.0.256,很明显,首先IP地址的每一位最多三位数,1192就不符合,其次每一位最大值为255,所以256也不符合,所以就需要先判断输入的IP是否符合条件,再执行ping操作,脚本内容如下:

写完了,那就执行一下看看:

执行结果很容易理解,可这个脚本内容是不是看起来很复杂?别急,其实上述的所有内容都是一行,只是屏幕显示为多行,很简单的

$1为位置参数,在这里就是要输入的IP地址,

egrep -q 是静默输出,就是执行成功不会有任何提示结果,最长的那段是过滤IP是否符合要求,符合,则执行&&之后的语句,把输入的IP扔给PING命令执行(-c1为只ping一个包,-w1为一秒钟)&> /dev/null则为把输出结果扔掉

具体逻辑关系看下图就明白了:

if 在脚本中的运用

这个逻辑关系看着不难,但是脚本里面写成这个样子着实不好看,很容易出错,那就用点逻辑清晰的语句来写吧,换一个例子:

例:给定脚本一个参数为普通文件,判断是否为以 .sh结尾的普通文件,是则给其赋予执行权限(x),否则输出“非用户脚本文件”:

怎么样,感觉挺复杂,不过是不是看起来有条理,不像上一个脚本文件写的那么乱了?

仔细看,相同颜色的框是一个完整的逻辑语句, if里面可以继续用if,需要注意的是要保证语句的完整性,初次使用此类方式需要注意语法错误的同时,要留意不要忘掉类似“fi”这样的结束语句

*每一个IF后面 [ ]里面的关于test和grep等等为在脚本学习之前的内容,在此不再赘述

首先,灰色框是判断文件是否存在,存在,则继续执行红色框;否则,直接输出“文件不存在”脚本执行结束

执行红色框判断给定参数文件是否为普通文件,是,则继续执行蓝色框;否则直接退出,脚本执行结束

执行蓝色框判断是否为“.sh”结尾的文件,是,则为其添加执行权限,否,则输出“非用户脚本文件”,脚本执行结束

心得

由于现阶段关于逻辑判断以及循环语句的学习有限,暂时只能写出这么多,不过前面基础命令以及各个选项都能运用自如的话现在仅用IF写出来的脚本也很不错的,现阶段的脚本都是对给定参数的处理以及基本输出,没有太多复杂的其他东西,基础很重要!十分的重要!!别小看基础命令什么的,就最最基本的 ls命令选项就好几十个,常用的那些都没人保证全部都记得,所以还是要多复习多练,这样写脚本才能运用自如,否则,磕磕绊绊不说,选项记不住,命令功能不清楚,语法格式也不清楚,写脚本一定举步维艰,

仅以此文,写给在Linux学习道路上一路狂奔的小白们

linux脚本好难,LinuxShell脚本从入门到比入门强一点点的坎坷之路相关推荐

  1. linux 批量删除任务,Linux-Shell脚本学习心得之批量创建、删除用户

    继上次博文,继续为大家分享脚本实例:批量创建.删除用户 说到,用户的管理,大家都不会陌生,就是创建.删除.禁用等等的管理,但,大多都是管 理员手工操作,效率不是很高,今天,就给大家说说Shell脚本是 ...

  2. linux用两种方法找到cuond,很基础的Linuxshell脚本学习.doc

    很基础的Linuxshell脚本学习 详细介绍Linux shell脚本基础学习(一) 2010-03-05 10:24 佚名 互联网 我要评论(9) 字号:T | T Linux shell脚本基础 ...

  3. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc

    面向dba的linuxshell脚本简介.doc 面向DBA的LinuxShell脚本简介7年前,Oracle发布了Linux上的第一个商业数据库.从那时起,Oracle.RedHat和Novell/ ...

  4. linux系统写一个脚本,编写一个简单的linuxshell脚本

    shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成.下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家 ...

  5. linux 修改sh文件生效,Linux-shell脚本基础

    本章内容 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell ...

  6. linux shell命令行及脚本编程实例详解_Linux高手必看的10本经典书籍

    Linux高手必看的10本经典书籍 Linux 是一个开放.灵活.跨平台的操作系统,上至庞大的数据中心,下至可放于掌心中的嵌入式设备,Linux 的身影无处不在. 如果你想成为一名精通 Linux 程 ...

  7. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  8. 黑客进阶必读书《Linux命令行与Shell脚本编程大全》(第2版)

    欢迎来到命令行和shell脚本编程的世界!厚厚的一本小样书,拿在手上,厚厚的一本,六百多页.不只是掂在手上的重量,更是一本优秀的初学者入门指南,又会是你的Linux书库中非常不错的参考书.如果你想从整 ...

  9. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...

最新文章

  1. mysql5.0镜像_Mysql5.0学习笔记(一)
  2. Nagios插件NDOUtils安装
  3. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
  4. 实验吧_NSCTF web200FALSE(代码审计)
  5. java没有释放内存_java – G1年轻的GC没有释放内存 – 空间耗尽
  6. linux内核那些事之用户空间管理
  7. 大数据之-入门_Hadoop发展历史---大数据之hadoop工作笔记0009
  8. 不可不知的 Android strings.xml 那些事
  9. 有趣的算法:1元=1分
  10. NXP的CLRC663和ST的M24LR04通信时所遇到的问题
  11. 微信 8.0 「裂开」「炸弹」的特效代码
  12. Ubuntu破解密码
  13. 修改解锁植物大战僵尸所有模式、关卡、金钱
  14. win2003修改密码后提示确认用户名及域无误_周知!贵州高考志愿填报系统提示!...
  15. Spark血缘字段解析
  16. java计算机毕业设计民航售票管理系统源代码+数据库+系统+lw文档
  17. Eplan绘图软件:EPLAN 中的项目结构
  18. 算法学习系列(贪心算法)—机器人攀登问题
  19. 在Mac上模拟IE浏览器
  20. 微软Visio流程图软件,Visio流程图制作工具下载安装教程(1)

热门文章

  1. 香港云服务器和物理服务器哪个更容易宕机?
  2. CentOS 7下简单搭建个人博客——wordpress
  3. 人脸检测背景介绍写的很好,请看知乎原文,https://zhuanlan.zhihu.com/p/32702868
  4. HTML5+CSS3超全笔记,收藏起来方便随时查看
  5. C++保留字三字符组一览
  6. 玩游戏提示d3dx9丢失-找不到d3dx9怎么修复
  7. 堆晶结构_宁夏贺兰山北段构造—岩浆演化与金矿床成因
  8. 小米手机6种截屏方法,很多人只用过一两种,你又用过几种?
  9. 读论文12——NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis
  10. c#中字符串转为json对象与json转对象