Linux学习 -- Shell编程

  • Shell概述
  • Shell解析器
  • Shell脚本入门

一、Shell概述

定义: Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

特点: 是一个功能强大的编程语言,易编写、易调试、灵活性强。

Shell执行过程:应用程序通过向Shell解释器发送命令,由Shell解释器调用系统接口,和Linux内核进行交互,然后Linux内核通过操作硬件来执行,最后内核通过系统输出接口,将结果输出结果显示到屏幕中。可以说使用Llinux的过程,都是通过Shell来完成的。

二、Shell解析器

1、Linux提供的Shell解析器有:

[atguigu@hadoop101 ~]$cat /etc/shells

/bin/sh
/bin/bash
/sbin/nologin

/bin/dash
/bin/tcshu

/bin/csh
Shell解析器一般是以sh结尾的,上面表示能解析Shell脚本的一共有6种。常用的前两种。

系统默认的解析器是bash解析,sh解析使用软链接指向bash。

各种不同的解析器,类似编程语言的不同版本。

三、Shell脚本入门

3.1 脚本格式

     脚本以#!/bin/bash开头  (指定解析器)

脚本规范:

在shell脚本中,#后面的内容代表注释掉的内容,提供给开发者或使用者观看,系统会忽略此行注释可以单独写一行,也可以跟在命令后面
尽量保持爱写注释的习惯,便于以后回顾代码的含义,尽量使用英文、而非中文。

执行脚本的方式:

  • bash script.sh 或 sh scripte.sh ,文件本身没权限执行,没x权限,则使用的方法,或脚本未指定shebang ,重点推荐的方式
  • 使用绝对/相对路径执行脚本,需要文件含有x权限
  • source script.sh或者﹒ script.sh ,代表执行的含义,source等于点.
  • 少见的用法,sh < script.sh

Shell和运维:shell脚本语言很适合处理纯文本类型数据,且Linux的哲学思想就是一切皆文件,如日志、配置文件、文本、网页文件,大多数都是纯文本类型的,因此shelI可以方便的进行文本处理,好比强大的Linux三剑客(grep、sed、awk)

注意:Shebang
计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#!

在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如

  • 以#! /bin/sh 开头的文件,程序在执行的时候会调用/bin/sh ,也就是bash解释器
  • 以#!/usr/bin/python开头的文件,代表指定python解释器去执行
  • 以#!/usr/bin/env解释器名称,是一种在不同平台上都能正确找到解释器的办法

注意事项:

  • 如果脚本未指定shebang ,脚本执行的时候,默认用当前shell去解释脚本,即 $SHELL
  • 如果shebang 指定了可执行的解释器,如/bin/bash /usr/bin/python ,脚本在执行时,文件名会作为参数传递给解释器
  • 如果#!指定的解释程序没有可执行权限,则会报错"bad interpreter: Permission denied”"。
  • 如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。
  • 如果#!指定的解释程序不存在,那么会报错"bad interpreter: No such file or directory”。
  • #之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。
  • 如果你使用"bash test.sh"这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。

3.2、第一个Shell脚本  Hello World

创建一个Shell脚本,输出Hello World

新建一个HelloWorld.sh文件,然后进行编辑内容:

                #!/bin/bash

                echo "Hello World 666"

保存退出后,然后运行

1、先使用sh或者bash命令进行执行这个脚本文件。

     命令是: bash HelloWorld.sh

2、使用,/来执行这个 脚本文件,发现权限不够,执行失败。

    这时候,使用chmod来修改权限为可执行,再次执行,结果成功显示。

注意:第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本木身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3.3、第二个Shell脚本,多命令处理

(1) 需求:

        在/home/datas目录下创建一个love.txt,在love.txt文件种增加 “i love shell”.

(2) 完成过程

        创建一个名为bash.sh的脚本文件,然后进行编辑内容

        脚本内容为:

        #!/bin/bash

        cd /home/datas

        touch  love.txt

        echo "i love shell" >> love.txt

        保存后,再执行Shell脚本: bash bash.sh

结果如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值