笔记–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
下一篇 2016-08-12

相关推荐

  • 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; ~]# grep  “^[[:space:]]\{1,\}” /boot/grup/grup.conf                     &…

    2017-03-01
  • httpd应用举例

    应用举例1、基于用户和组认证的方式访问ftp         1、编辑配置文件/etc/httpd/conf/httpd.conf,并使用httpd -t 检查语法,并systemctl reload httpd       &n…

    Linux干货 2016-10-23
  • FHS文件系统各目录功能

    FHS       Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。下为…

    Linux干货 2016-10-16
  • Hadoop HDFS分布式文件系统设计要点与架构

    Hadoop简介:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件…

    Linux干货 2015-04-13
  • 第三周:文本处理工具wc,cut,sort,uniq,tr,tee命令练习和用户及组相关命令练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可; [root@app1 tmp]# who | cut -d" " -f1| uniq root dts centos 2、取出最后登录到当前系统的用户的相关信息; [r…

    Linux干货 2016-09-27
  • Linux系统的软硬连接的区别

    Linux系统的软硬连接的区别 M21-陆东贵 CentOS 7.2 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 一、  硬链接: 硬连接是指通过索引节点来进行连接Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接…

    Linux干货 2016-10-19

评论列表(1条)

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

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