Shell脚本编程基础1

本文介绍了Shell编程的基础知识,包括编程风格、执行方式、脚本格式等内容,并详细讲解了Shell脚本的创建、执行、调试方法以及变量的概念和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章目录:

一.编程基础
二.脚本基本格式
三.变量
四.运算
五.条件测试
六.配置用户环境
一.编程基础
1.程序:
 1)程序:指令+数据
 2)程序编程风格:
   (1)过程式:以指令为中心,数据服务于指令
   (2)对象式:以数据为中心,指令服务于数据
 3)程序的执行方式:
    (1)计算机:运行二进制指令,无法查看
    (2)编程语言:
        a.低级:越接近于数字0和1,越接近于计算机能够读懂的语言,是低级语言
                     例如:汇编
        b.高级:越接近于人类能够读懂的语言,是高级语言
           a)编译型语言:
             (a)高级语言源代码------------->二进制文件------------->目标程序
                                          编译器编译                     使用者执行
             (b)由于使用者只是执行二进制文件,不需要源代码,也不需要编译器编译,所以执行效率高
             (c)执行之前需要编译,有时编译所需要的时间比较长
             (d)可以对版权进行保护
             (e)例如:java,C#
           b)解释型语言:
             (a)高级语言程序------------->二进制文件-------------->目标程序
                                      解释器解释----------------计算机执行                           
                                                             同时进行
             (b)即时性较强,即写即执行
             (c)执行效率没有编译型语言高
             (d)不同语言的解释器不同
             (e)例如:shell, perl, python
  4)Shell程序:提供了编程能力,解释执行
2.Shell编程的基本概念
 1)Shell编程的逻辑处理方式
   (1)顺序执行
   (2)循环执行
   (3)选择执行
 2)Shell编程:过程式、解释执行
 3)Shell编程语言的基本结构:
   (1)各种系统命令的组合
   (2)数据存储:变量、数组
   (3)表达式:a + b
   (4)语句:循环语句,判断语句
二.脚本基本格式
1.Shell脚本:包含一些命令或声明,并符合一定格式的文本文件
2.Shell脚本的首行:
  1)首行格式:
    (1)shebang机制和shell的解释器
    (2)因为脚本的实质是文本文件,不能执行;所以必须需要调用解释器将其解释为二进制文件,才可以执行
    (3)每一种解释型语言都有特定的解释器
         bash shell的解释器:#!/bin/bash
    (4)其他语言的解释器:
       perl:/bin/perl
       python:/bin/python
  2)在执行脚本的时候不调用解释器,只使用脚本的绝对或相对路径执行,那么系统会到脚本的首行shebang中搜索解释器,找         到时调用这个解释器去执行这个脚本;
     如果没有找到,会调用当前的默认shell去运行;
     例:./文件
  3)如果执行脚本的时候直接调用解释器,加上脚本的绝对或相对路径去执行,那么不需要在脚本的首行使用shebang机制和           shell的解释器(不常用),不便移植
     例:/bin/bash 文件 
  4)执行一个脚本:./文件a=/bin/bash 文件
     所以脚本的首行可以不是/bin/bash(不常用)
     例:写一个delete.sh的脚本,首行为#!/bin/rm -rf ,删除功能,并在第二行准备输出"hello world"
   
          当执行这个脚本时候,这个脚本自身被删除了,hello world 并不会输出
3.创建shell脚本
 1)第一步:使用文本编辑器来创建文本文件
   (1)第一行必须包括shell声明序列:#!
       例:#!/bin/bash
   (2)添加注释:注释以#开头
 2)第二步:运行脚本
   (1)如果执行脚本的时候不调用解释器,只使用脚本的绝对或相对路径去执行,需要靠脚本的"shebang"部分提供解释器,那么
       必须给予脚本执行权限
   (2)如果执行脚本的时候直接运行解释器,将脚本作为解释器程序的参数运行,脚本只是提供数据的文件,那么不需要给予脚本         执行权限
4.脚本代码开头注释信息的规范
 1)第一行一般为调用使用的语言
 2)程序名,避免更改文件名为无法找到正确的文件
 3)版本号
 4)更改后的时间
 5)作者相关信息
 6)该程序的作用,及注意事项
 7)最后是各版本的更新简要说明
5.脚本调试
 1)检测脚本中的语法错误
    bash -n 文件的绝对路径/文件的相对路径
    例:创建一个有语法错误的test.sh的脚本
    执行之后会显示出语法错误
  2)调试执行
    bash -x 文件的绝对路径/文件的相对路径
    例:创建一个又可以正确执行部分,有语法错误部分的脚本test1.sh
           执行之后会在脚本执行成功的代码之前添加一个"+",并将成功执行的输出内容显示出来,错误的部分会提示语法错误

三.变量
1.变量:命名的内存空间
 1)数据存储方式:
   (1)字符:(可以是路径)
   (2)数值:整型,浮点型
 2) 作用:(1)数据存储格式 (2)参与的运算(3)表示的数据范围
2.变量的类型:
 (1)强类型:
    a.变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。
    b.一般定义变量时必须指定类型
    c.参与运算必须符合类型要求
    d.用未声明变量会产生错误
    e.如 java,c#
 (2)弱类型:
    a.语言的运行时会隐式做数据类型转换。无须指定类型,默认均为字符型;
    b.参与运算会自动进行隐式类型转换;
    c.变量无须事先定义可直接调用
    d.如bash(不支持浮点数),php
3.变量的命名法则
 1)不能使程序中的保留字:例如if,for
 2)只能使用数字、字母及下划线,且不能以数字开头
 3)见名知义
 4)统一命名规则:驼峰命名法;例如:UserName
4.变量的种类
 1)根据变量的生效范围等标准分为:
   (1)本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
   (2)环境变量:生效范围为当前shell进程及其子进程
   (3)局部变量:生效范围为当前shell进程中某代码片断(通常指函数)
   (4)位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
   (5)特殊变量:$?, $0, $*, $@, $#,$$
 2)本地变量
   (1)变量赋值:(例如变量名为"name")
      a. 可以是直接字串赋值: name=“root"
      b.引用其它变量的值赋值:name="$USER"
      c.引用命令的执行结果赋值:name=`COMMAND` name=$(COMMAND)
   (2)变量的引用: 
       a.${name}:指定变量的范围,
         例:如果赋值变量A=123,输出的时候想通过引用变量A输出123456
    
       b.$name:直接引用变量
   (3)"":弱引用,双引号其中引用的变量会被替换为变量值
       '':强引用,单引号其中的引用的变量不会被替换为变量值,而保持原字符串,即所见即所得
   (4)显示已定义的所有变量:set
   (5)删除变量:unset name
3)环境变量
  (1)变量声明、赋值:
     a.export name=VALUE
     b.declare -x name=VALUE
     例:给变量A赋值123,再通过bash进入当前shell的一个子shell,变量失效
            通过环境变量赋值,变量A的值仍然存在
 
  (2)变量引用:$name, ${name},与本地变量相同
  (3)显示所有环境变量:
     env
     printenv
     export
     declare -x
  (4)删除变量:unset name
  (5)bash内建的环境变量:
     PATH
     SHELL
     USER
     UID
     HOME
     PWD
     SHLVL
     LANG
     MAIL
     HOSTNAME
     HISTSIZE
     —
4)位置变量

  









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值