笔记–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

相关推荐

  • 游戏运维工程师

    爱乐盟互动为深圳市政府评定的深圳市重点文化企业,同时为广东省高科技产业商会常务理事单位,注册资金人民币1000万元。公司的原创大型MMORPG网游《王者传说2》为深圳市政府重点支持的网游项目,《王者传说2》将全面领先于国内的同类产品,成为业界新标准的重要网游产品!! 《王者传说2》已进入产品研发的重要阶段。除《王者传说2》,爱乐盟也已经启动了数款全新大型网游…

    Linux干货 2016-10-19
  • N25第二周博客作业

    第二周博客作业: 1、linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。                    有  cp  mv&nbsp…

    Linux干货 2016-12-06
  • Linux 启动流程

    Linux启动流程 POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切换)–>/sbin/init–>RunLevel–&gt…

    Linux干货 2016-06-09
  • TCP连接的状态转移

    TCP是一个面向连接的传输层协议,因此不论哪一方需要传输数据,都需要在双方之间建立一条传输连接。 用TCP的三次握手与四次挥手来解释TCP的各个状态之间的会比较清晰。 一、TCP的三次握手: a)         单方主动发起连接: 1、  服务器端应用层的应用程序创建…

    2017-03-19
  • 0803作业

    课上练习 1.当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?  drwxr-xr–. 14 root root 4096 Aug  3 13:35 /testdir [xiaoming@localhost ~]$ touch /testdir/f1…

    Linux干货 2016-08-04
  • linux权限详解

    写在前面: 本博客详解命令chmod,  chowm,  chgrp,  umask,  install,  mktemp  权限管理: 进程文件访问权限应用模型: 进程的属主与文件属主是否相同,如果相同,则应用属主权限 否则,检查文件的属主是否属于文件的属组,如果是,则应用属主权限 否则,应用ot…

    Linux干货 2015-12-19

评论列表(1条)

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

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