Linux shell脚本编程

编程语言分类:根据运行方式

编译运行:源代码–>编译器(编译) –>程序文件

解释运行:源代码–>运行时启动解释器,由解释器边解释边运行

根据其编程过程中功能的实现是调用库还是调用外部的程序文件

shell脚本编程:利用系统上的命令及其编程组件进行编程

完整编程: 利用库或编程组件进行编程

编程模式:过程式编程语言,面向对象的编程语言

过程式:以指令为中心来组织代码,数据是服务于代码

对象式:以数据为中心来组织代码,围绕数据来组织指令

类(class):实例化对象,,method  代表:java,c++,Python

 

shell脚本编程:过程式编程,解释运行,依赖于外部程序文件运行

如何写shell脚本:

脚本文件的第一行,顶格:给出shebang,解释器路径,用于指明解释执行当前脚本的解释器程序

常见的解释器:

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

 

文本编程器  :  nano

行编辑器:sed

全屏幕编辑器:nano,vi,vim

 

shell脚本是什么?

命令的堆积

但很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行中发生错误

运行脚本:

1. 赋予执行权限,并直接运行此程序

chmod +x   SCRIPT_FILE

./SCRIPT_FILE

2.直接运行解释器,将脚本以命令行参数传递给解释器程序

bash  SCRIPT_FILE

 

注意:

脚本中的空白行会被解释器忽略

脚本中,除了shebang,余下所有以#开头的行,都会被视作注释行而被忽略,即为注释行

shell脚本的运行是通过运行一个子shell进程实现的

 

bash的配置文件:

两类:

profile类:为交互式登录的shell进程提供配置

bashrc类:为非交互式登录的shell进程提供配置

登录类型:

交互式登录shell进程:

直接通过某终端输入账号密码后登录打开的shell进程

使用su命令,su – username 或者使用su -l username 执行的登录切换

非 交互式登录shell进程:

su username 执行的登录切换

图形界面下打开的终端

运行脚本

 

profile 类:

全局:对所有用户都生效

/etc/profile

/etc/profile.d/*.sh

用户个人:仅对当前用户有效:

~/.bash_profile

功用:

1.用于定义环境变量

2.运行命令或脚本

 

bashrc类:

全局:

/etc/bashrc

用户个人:

~/.bashrc

功用:

1.用来定义本地变量

2.定义命令别名

 

交互式登录shell进程读取文件顺序

/etc/profile –>/etc/profile.d/* –>~/.bash_profile –>~/.bashrc –>/etc/bashrc

非互式登录shell进程读取文件顺序

~/.bashrc –>/etc/bashrc –>/etc/profile.d/*        (脚本取决去这些配置信息)

 

命令行中定义的特性,例如变量和别名 作用域为当前shell进程的生命周期

配置文件中定义的特性,只对随后新启动的shell进程有效

 

让通过配置文件定义的特性立即生效:

1. 通过命令行重新定义一次

2.让shell进程重新读取配置文件

source CONF_FILE

. CONF_FILE

 

 

类似文章