笔记–8.8 shell脚本编程

shell编程注意事项

 1,指令的执行是从上而下,从左而右的分析与执行

 2,指令的下达时:指令,选项与参数之间的多个空白都会被忽略掉

 3,空白行会被忽略掉,并且tab键所推开的空白同样视为空格键

 4. 如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行

 5,『 # 』可做为批注,任何加在 # 后面的资料将全部被视为批注文字而被忽略

  

如果程序文件名是 /home/dmtsai/shell.sh 好了可以有底下几个执行方法:

 1,直接指令下达: shell.sh 文件必须要具备可读与可执行 (rx) 的权限,然后:

        o 绝对路径:使用 /home/dmtsai/shell.sh 来下达指令;

        o 相对路径:假设工作目录在 /home/dmtsai/ ,则使用 ./shell.sh 来执行

        o 变量『PATH』功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/

 2,以 bash 程序来执行:透过『 bash shell.sh 』或『 sh shell.sh 』来执行

shell脚本编程

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

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

解释运行:源代码–》运行时启动解释器,由解释器边解释边运行,速度更快

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

shell脚本编程

利用系统上的命令及编程组建进行编程

完整编程:

利用库或编程组件进行编程

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

程序=指令+数据

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

  顺序执行

  选择执行

  循环执行

  代表:C,bash

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

  类(class):可被实例化对象,操作 组成

  代表:Java,C++,Python

 

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

  如何写shell脚本

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

  常见的解释器:

  #!/bin/bash

  #!/use/bin/python

  #!/usr/bin/perl

  文本编辑器:nano

  行编辑器:sed

  全屏幕编程器:nano vim

shell脚本是什么?

命令的堆积:    

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

运行脚本

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

 chmod +x /PATH/TO/SCRIPT_FILE

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

 bash /PATH/TO/SCRIPT_FILE

注意:脚本中的空白行会被解释器忽略,不会显示空白行,如果想显示,就在该行输入echo就可以了

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

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

练习:写一个脚本,实现如下功能

    1,显示/etc目录下所有以大写P或小写p开头的文件或目录本身

    2,显示/var目录下的所有文件或目录本身,并将显示结果中的小写字母转换为大写后显示

    3,创建临时文件/tmp/myfile.XXXX

   

    #!/bin/bash

  ls -d /etc/[pP]*

ls -d /var/* |tr 'a-z'  'A-Z'

mktemp /tmp/myfile.XXXX

bash的配置文件:

两类

profile类:为交互式登陆的shell提供配置

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

登陆类型

交互式登录的shell进程

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

使用su命令:su -USERNAME或使用  su-L USERNAME执行的登陆切换

非交互式登录shell进程

su USERNAME执行的登陆切切换

图形界面下打开的终端

运行脚本(bash运行脚本,脚本中包含shell,就是子shell)

profile类

全局:对所有用户都生效

/etc/profile

/etc/profild.d/*.sh

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

~/.bash_profile

功用;

1,用于定义环境变量

2,运行命令或脚本

bashrc类

全局:

/etc/bashrc

用户个人

~/.bashrc

功用:

1,定义本地变量

2,定义命令别名

注意:仅管理员可修改全局配置文件

配置文件的读取次序

交互式登录shell进程(登录系统)

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

非交互式登录shell进程(脚本)

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

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

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

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

1,通过命令行重复定义一次

2,让shell进程重读配置文件(在.bashrc新定义的alias不会立即生效,采用下面两种方法)

 ~]# source /PATH/FROM/CONF_FILE

 ~]# ./PATH/FROM.CONF_FILE

原创文章,作者:wutianyou,如若转载,请注明出处:http://www.178linux.com/31749

(0)
wutianyouwutianyou
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相关推荐

  • 马哥教育网络21期+第九周练习博客

    马哥教育网络21期+第九周练习博客 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; [root@localhost bin]# cat 1.sh  #!/bin/bash # while&nbsp…

    Linux干货 2016-09-05
  • 马哥教育网络班22期+第1周课程练习

    一、计算机组成部分及其功能:硬件系统和软件系统     1、计算机的硬件系统组成及其功能:         运算器:处理数据的算术运算及逻辑运算即数据加工处理;         控制器:根据…

    Linux干货 2016-08-15
  • 计算机的组成和Linux发行版本介绍

    计算机的组成及功能 计算机的五大组成,如下 各部分的作用; 控制单元和算数逻辑单元是CPU的两个主要组成部分  控制单元主要协调各组件与各单元间的工作  算数逻辑单元主要负责程序运算与逻辑判断 内存,DRANM(Dynamic Random Access Memory)动态随机访问内存;CPU读取的数据都是从内存读取来的。 输入单元,下指…

    2017-07-02
  • 文件压缩,解压缩及归档

        在Linux的环境中,压缩文件的扩展名大多是:“*.tar, *.tar.gz, *.gz, *.Z, *.bz2, *.xz”,因为 Linux 支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件,当你下载到某个压缩文件时,自然就需要知道该文件是由哪种压缩指令…

    Linux干货 2016-08-18
  • btrfs文件系统——更加高级的文件系统

    Btrfs 文件系统: Btrfs ( B-tree ,Butter FS ,Better FS ) GPL ,Oracle公司在2007年研发,支持CoW(对文件快照),为了取代ext3,ext4,xfs 核心特点:          多物理卷支持:btrfs可由多个底层物理卷…

    Linux干货 2016-08-31
  • 马哥教育网络第21期-第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过 字符串比较来实现; #!/bin/bash nologin=$( cut -d: -f7 /etc/passwd | grep &#03…

    Linux干货 2016-11-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-12 14:50

    对脚本基础总结的较为详细,但是脚本更应该注重实战,而不是停留在理论哦,只有多看,多谢,才能写出优秀的脚本哦,