第一章 基础

shell的优势在于处理操作系统底层的业务,
Python,php的优势在于开发运维工具,web界面的管理工具以及web业务开发。
处理一键安装、优化、报警脚本
shell又叫命令解释器,它能识别用户输入的各种命令,并传递给操作系统,
Linux系统默认的shell是bash。

脚本的建立:
    脚本开头第一行  #!/bin/bash 或 #!/bin/sh
#!又称为幻数,在执行bash脚本的时候,内核会根据“#!后的解释器来确定该用哪个程序解释脚本中的内容
如果不设置,则为系统默认的解释器(为bash)
后面的行有#!表示注释。
用  bash test.sh  执行

脚本注释:
    跟在#后面内容表示注释,对脚本进行说明。
    用:<<BLOCK         BLOCK结构注释,注释内容比较长时避免每一行都要写#
    将BLOCK之间的代码重定向到一个不存在的命令,从而实现了多行注释。
    
脚本执行:
    当shell脚本以非交互方式(文件方式)运行时,会先查找环境变量ENV中的内容,该变量制定了一个环境文件(通常是.bashrc   .bash_profile  /etc/bashrc  /etc/profile等),然后从该环境变量文件开始执行,当读取了ENV文件后,shell才开始执行shell脚本中的内容。
crond 任务时把系统环境变量在脚本中重新定义!
shell脚本的执行通常可以采用以下三种方式:
    1、bash script-name 或 sh script-name
    2、path/script-name 或 ./script-name(当前路径下执行脚本)
    3、source script-name 或 . script-name
 执行说明:
第一种方法是当前脚本没有可执行权限时使用的方法
第二种需要先将脚本文件的权限改为可执行权限(chmod u+x script-name 或 chmod 755 script-name)
第三种方法是使用source或“.”点号读入或加载指定的脚本文件然后,依次执行指定shell脚本的中的所有语句。

这种方法可以将执行脚本中的变量和函数带到当前的shell中
类似于函数调用,脚本第二行应该写source或 . (而不是bash)则可以嵌套调用
步骤:
    在vim /etc/init.d/functions里面可以自己写函数
    own(){
    echo"hhhh"
    }
    然后在3.sh 里面写
    #!/bin/sh
    source /etc/init.d/functions
    own
    
    然后执行3.sh (输入命令sh 3.sh) 则结果为hhhh
    
#[]中括号两端要有空格[ hhhhh ]

脚本参数:
    $n 表示传递给脚本的第n个参数,即$1表示第一个参数。
    $# 命令行参数的个数(不包括$0,即排除脚本的名称)
    $0 当前脚本的名称
    $* 以参数1 参数2 ……的形式返回所有参数的值
    $@ 以参数1,参数2,……的形式返回所有参数的值
    $_ 保存之前执行的命令的最后一个数
    另外,用户传递的参数数量多于9个时,不能使用$10来引用第10个参数,应先保存$1的值,然后使用shift命令删除参数1,此时$10就变成了$9,$#的值将被更新以反应参数的剩余数量。

Linux系统shell编程自学_第一章基础的更多相关文章

  1. 《openssl编程》:第一章基础知识

    第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...

  2. 【Hadoop离线基础总结】linux的shell编程

    linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...

  3. linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

    <linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...

  4. Linux 下shell 编程学习脚手架

    linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...

  5. Linux下Shell编程

    Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...

  6. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  7. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  8. .net架构设计读书笔记--第一章 基础

    第一章 基础 第一节 软件架构与软件架构师  简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...

  9. Laxcus大数据管理系统2.0(2)- 第一章 基础概述 1.1 基于现状的一些思考

    第一章 基础概述 1.1 基于现状的一些思考 在过去十几年里,随着互联网产业的普及和高速发展,各种格式的互联网数据也呈现爆炸性增长之势.与此同时,在数据应用的另一个重要领域:商业和科学计算,在各种新兴 ...

随机推荐

  1. AutoMapper 使用总结

    初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字 ...

  2. input 光标在 chrome下不兼容 解决方案

    input 光标在 chrome下不兼容 解决方案 height: 52px; line-height: normal; line-height:52px\9 .list li input[type= ...

  3. JAVA定时任务调度之Timer入门详解(一)

    所谓的Timer,打开jdk的api文档可以看到它的定义:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.通俗点讲就是说:有且仅有一个后台线程对多个业务线程进行 ...

  4. webapi框架搭建-日志管理log4net

    前言 本篇讲怎么在前几篇已经创建好的项目里加上日志处理机制,我们采用Log4net技术.跟多的log4net技术的细节请查阅log4net的官网. log4net官网:http://logging.a ...

  5. 关于OC中浮点型的计算

    有时候不得不承认,细心观察生活中的细节,有时候会得到很多. 今天和公司朋友一起订了外卖,因为要分账,就突发奇想用代码来算出每个人花了多少钱.最后发现以前没有注意的细节或者不知道的知识,记录下. 我的代 ...

  6. C和Lua之间的相互调用

    前面的话 第一次接触Lua是因为Unity游戏中需要热更,但是一直没搞懂Lua是怎么嵌入到别的语言中执行的,如何互相调用的.这次打算好好了解一下C跟lua是如何交互的 那么如何使用Lua语言? lua ...

  7. 【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)

    新功能   问题描述(Bug #18871046, Bug #72811): 主要为了解决一个比较“古老”的MySQL在NUMA架构下的“swap insanity”问题,其表现为尽管为InnoDB ...

  8. EMMC与nand flash的区别【转】

    1.NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计. 2.eMMC是NAND flash+主控IC ,对外的接口协议与SD.TF卡类似:对厂家而言简化了电路设计,降低了 ...

  9. Java中的集合框架(下)

    学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...

  10. meta标签有何作用?一起来学习一下

    平日里总是沉迷于写页面写组件思考业务逻辑,解决冲突找出bug,猛的发现躲在head标签里的一大串标签时什么?这么多meta标签好多居然都不知其存在的意义.所以决定记录一下学习到的知识点. 先搞明白以上 ...