Linux C笔记2——Shell编程之简介和基本语法


shell的简介

    1.介绍:shell俗称:壳(用来区别“核”),是指提供给使用者使用操作系统界面软件(命令解析器)。


    2.作用:遵循一定的语法将输入的命令加以解释并传给操作系统内核,它提供了一个向linux发送请求以便运行程序的接口。用户可以使用shell来启动、挂起、停止甚至设计编写一些程序。


    shell程序又叫shell脚本

    cat  /etc/shell        查看系统自带的所有shell环境

    echo $SHELL        查看当前用户使用的shell类型

    直接输入shell的路径名    可进入另一个shell环境,exit退出



shell简单使用



    1.命令行中输入的第一个字必须是一个命令的名,第二个字是命令的选项或参数,命令行中的每个字必须由空格或tab隔开。用-连接的是选项,无-的是参数。

    2.一个命令行中可以多个命令,用分号隔开,这些命令顺序执行。也可在多行输入一个命令,用反斜杠连接。

    3.提示符:$表示普通用户权限、#表示超级用户权限

    4.shell程序 = 变量+条件+程序结构+shell命令

    5.用touch创建一个.sh结尾的文件,无执行权限。需要手动更改:chmod +x 文件名



shell的基本语法


 变量



用户变量



    变量名由字母、数字、下划线组成,且第一个必须是字母或下划线。    

    变量不需要声明,只是在第一次用到它时进行创建并赋值。

    变量没有任何数据类型的概念,赋的值类型不管是什么类型,都理解为字符串。linux区分大小写

    注意在赋值时,赋值号=两边不能有空格,若=右边的字符串有空格,必须用引号将其括起来。
        
    在变量前使用$符号可以获取其内容,用echo命令输出。$符号是shell的特殊符号,若$后跟一个合法变量名,则shell会自动引用该变量的值。所以,要使用变量中的值就要在变量名前加一个$

    使用read命令可以读入变量的值

    
    --------------------------------
       一个简单的shell脚本
    -------------------------------


-----------------------------------------------------------------------------

     #!/bin/bash
     #This is a sample about echo and read shell variable
      value="Hello World"
    my_hello="I love  linux C ! "
      count=100
      echo $value
      echo $count
      echo $value $my_hello    #一次显示多个变量的值
      read readed_value    #读取终端输入的字符串到变量readed_value
     echo $readed_value    #显示readed_value的值


        --------
          结果
        --------
    -------------------------
    [sayer@fedora shell]$ ./echo_read.sh
    Hello World
    100
    Hello World I love linux C !
    I'm best !     //输入的信息
    I'm best !


------------------------------------------------------------------------------

     shell提供了参数置换能力,使用户可根据不同条件给变量赋不同的值,参数置换的变量有4种

    1.变量=${参数-word}:
      若设置了参数,则用参数的值置换变量的值。否则用word置换。即这种变量等于某一个参数的值,该参数没设置,则变量就等于word的值

    2.变量=${参数=word}:
      若设置了参数,则用参数的值置换变量的值。否则把变量设置成word,然后再用word替换参数的值。注意:位置参数不能用于这种方式,因为在shell程序中不能为位置参数赋值。

    3.变量=${参数?word}:
      若设置参数,则用参数的值置换变量的值。否则就显示word并从shell中退出。如果省略了word,则显示标准信息。这种变量要求一定要等于某一个参数的值,若该参数没有设置,就显示一个信息,然后退出。常用于出错指示。

    4.变量=${参数+word}:
      若设置参数,就用word置换变量。否则不进行置换。



系统变量


    
    表示方法        含义
    
       $n        $1表示第一个参数,$2表示第二个参数

       $#        命令行参数的个数

       $0        当前程序的名称

       $?        前一个命令或函数的返回码
    
       $*        命令行中输入的全体参数列表的清单
       
       $@        含义同$*,但它不使用IFS环境变量
      
       $$        本程序的PID(进程ID号)

       $!        上一个命令的PID


    ----------------------------------
       shell系统变量例子程序
    ----------------------------------

----------------------------------------------------------------------------
    #!/bin/bash
      #This sample is used to explain the shell system variable.
      echo "The program $0 is now running"
      echo "The program PID is $$"
      echo "The last progress PID is $$"
      echo "The number of parameter is $#"
      echo "The return code of last command is $?"
      echo "The first parameter is $1"
      echo "The second parameter is $2"
     echo "The parameter s are : $*"
     echo "Again,the parameters are : $@"
     echo "\$1 = $1 ; \$2 = $2"

        --------
          结果
        --------
    -----------------------------
    [sayer@fedora shell]$ ./sys_var.sh
    The program ./sys_var.sh is now running
    The program PID is 9317
    The last progress PID is 9317
    The number of parameter is 0
    The return code of last command is 0
    The first parameter is
    The second parameter is
    The parameter s are :
    Again,the parameters are :
    $1 =  ; $2 =

----------------------------------------------------------------------------


环境变量



    用env命令查看系统中所有环境变量的值,在/etc/profile文件中可添加、修改系统的环境变量,这种修改方式对所有用户生效且永久。
    修改环境变量文件后要执行source /etc/profile命令才会立即生效,否则只有下次重新登录的用户才会生效。
    也可用export修改环境变量,但只是对当前shell且临时的,关闭后失效。
    shell环境变量时所有shell程序都会接收的参数。shell程序运行时,都会接收一组变量,这组变量就是环境变量。
    最常用的是:PATH、HOME、LOGNAME
    环境变量通常采用大写命名,用户在shell脚本中定义的本地变量用小写。


    名称        含义

    PATH        shell命令搜索路径,以冒号为分隔符,通常包含一系列路径名

    HOME        用户home目录的路径名,也是cd命令的默认参数

    COLUMNS        定义了命令编辑模式下可用命令行的长度

    EDITOR        默认的行编辑器

    VISUAL        默认的可视编辑器

    FCEDIT        默认fc使用的编辑器

    HISTFILE    命令历史文件


    HISTSIZE    命令历史文件中最多可包含的命令条数

    HISTFILESIZE    命令历史文件中可包含的最大行数

    IFS        定义SHELL使用的分隔符

    LOGNAME        当前用户登录名

    MAIL        指向一个需要shell监视其修改时间的文件,当该文件修改后,shell将发消息You have one mail给用户

    MAILCHECK    SHELL检查MAIL文件的周期,单位为秒

    MAILPATH    功能与MAIL类似,但可以使用一组文件,以冒号分隔,每个文件后可跟一个问号和一条消息发向用户的消息

    SHELL        SHELL的路径名,即linux当前正在使用的shell类型

    TERM        终端类型

    TMOUT        SHELL自动退出的时间,单位为秒。若设为0则禁止SHELL自动退出

    PROMPT_COMMAND    指定在主命令提示符前应执行的命令

    PS1        主命令提示符,对于普通用户时$字符,对于root用户是#

    PS2        二级命令提示符,命令执行过程中要求输入参数时使用,通常是>字符

    PS3        select的命令提示符

    PS4        调试提示符

    MANPATH        寻找手册页的路径,以冒号分隔

    LD_LIBRAY_PATH    寻找库的路径,以冒号分隔





通配符

    主要用于模式匹配(单文件名中的圆点(.)和路径名中的斜线(/)不能用通配符代替)
    1.*    表示任意长度的字符串
    2.?    表示任何单字符
    3.[]    表示指定模式串匹配的字符范围,范围的上限和下限用-连接。如:[a-d]。
    4.注意:*、?若出现在[]中则表示为普通字符



引号:单引号、双引号、反引号


    1.单引号:由单引号括起来的字符为普通字符。
    
    2.双引号:双引号会解释特殊字符的特殊意义(即:会解释$、\、` 这三个字符的特殊意义)
    
    3.反引号:~的下档字符。反引号括起来的字符串被shell解释为命令行,在执行时shell会先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
    理解:就是反引号括起来的字符会被解释为命令,然后执行该命令的结果取代反引号及其命令执行内容。如:`pwd`,若将其放在一个变量中时,则str = "home is `pwd`",则结果是home is  家目录的路径(且没有反引号)



注释符:#

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值