Linux系统shell编程自学_第一章基础
第一章 基础
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编程自学_第一章基础的更多相关文章
- 《openssl编程》:第一章基础知识
第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...
- 【Hadoop离线基础总结】linux的shell编程
linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...
- linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍
<linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux下Shell编程
Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...
- .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- Laxcus大数据管理系统2.0(2)- 第一章 基础概述 1.1 基于现状的一些思考
第一章 基础概述 1.1 基于现状的一些思考 在过去十几年里,随着互联网产业的普及和高速发展,各种格式的互联网数据也呈现爆炸性增长之势.与此同时,在数据应用的另一个重要领域:商业和科学计算,在各种新兴 ...
随机推荐
- AutoMapper 使用总结
初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字 ...
- input 光标在 chrome下不兼容 解决方案
input 光标在 chrome下不兼容 解决方案 height: 52px; line-height: normal; line-height:52px\9 .list li input[type= ...
- JAVA定时任务调度之Timer入门详解(一)
所谓的Timer,打开jdk的api文档可以看到它的定义:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.通俗点讲就是说:有且仅有一个后台线程对多个业务线程进行 ...
- webapi框架搭建-日志管理log4net
前言 本篇讲怎么在前几篇已经创建好的项目里加上日志处理机制,我们采用Log4net技术.跟多的log4net技术的细节请查阅log4net的官网. log4net官网:http://logging.a ...
- 关于OC中浮点型的计算
有时候不得不承认,细心观察生活中的细节,有时候会得到很多. 今天和公司朋友一起订了外卖,因为要分账,就突发奇想用代码来算出每个人花了多少钱.最后发现以前没有注意的细节或者不知道的知识,记录下. 我的代 ...
- C和Lua之间的相互调用
前面的话 第一次接触Lua是因为Unity游戏中需要热更,但是一直没搞懂Lua是怎么嵌入到别的语言中执行的,如何互相调用的.这次打算好好了解一下C跟lua是如何交互的 那么如何使用Lua语言? lua ...
- 【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)
新功能 问题描述(Bug #18871046, Bug #72811): 主要为了解决一个比较“古老”的MySQL在NUMA架构下的“swap insanity”问题,其表现为尽管为InnoDB ...
- EMMC与nand flash的区别【转】
1.NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计. 2.eMMC是NAND flash+主控IC ,对外的接口协议与SD.TF卡类似:对厂家而言简化了电路设计,降低了 ...
- Java中的集合框架(下)
学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...
- meta标签有何作用?一起来学习一下
平日里总是沉迷于写页面写组件思考业务逻辑,解决冲突找出bug,猛的发现躲在head标签里的一大串标签时什么?这么多meta标签好多居然都不知其存在的意义.所以决定记录一下学习到的知识点. 先搞明白以上 ...