zoukankan      html  css  js  c++  java
  • Linux程序设计之shell程序设计

      看了《linux程序设计(第4版)》(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译)。做个笔记,以备后面查看。

      首先,清楚几个概念。

      shell编程属于脚本编程,脚本文件就是指令的集合,GCC是GNU编译系统驱动程序。

      Linux中的库分两种:静态库和共享库。静态库以.a结尾,也叫归档文件(archive),类似于windows中的.lib文件,他的缺点是同时运行的多个程序使用同个函数库函数时,内存中会有多个该函数及该程序文件的副本,浪费了内存。共享库以.so结尾,类似于windows中的.Dll文件。

      shell是对linux内核的一种封装,提供了一些函数的接口,shell程序设计就是利用这些函数接口进行编程。

      一般linux系统的shell装的是bash(Bourne Angain Shell),安装为/bin/sh,可以用$/bin/bash --version命令查看bash版本号:

    重定向

      重定向有重定向输入和重定向输出,似乎重定向输出用的比较多,可以将默认输出到屏幕上的内容重定向输出到一个文档中,eg:

    也可以用>>将内容追加的重定向到已有的文件中,eg:

    重定向输入使用<符号

    管道

    管道的作用是可以让进程进行通信,这样一个进程的结果就可以作为另一个进程的操作对象,比如说想对ps列出的进程列表进行sort排序,然后分屏输出,就可以使用命令:ps | sort  more

    通配符

    通配符可以匹配字符串、单个字符等

    *:表示任意字符串

    ?:表示任意单个字符

    []:[]中可以添加任意的字符

    [^ ]:表示不匹配[]里面的字符

    {}:中添加的是字符串

    创建脚本

    可以使用vim编辑脚本文件,使用bash的话脚本文件的首行是:#!/bin/sh 声明语句。

    linux中的变量不用声明类型,系统默认是字符串型,当时数值时,系统会自动转变类型,使用“$”+变量名,可以访问变量内容。要想输出空格,要用“”括起来,否则空格会被会略。

    可以使用read操作将命令行下用户输入的内容赋值给指定的变量。

    “”    ‘’    对变量操作的区别:

    “$变量名”输出的是变量的内容,

    ‘$变量名’    $变量名输出的是变量名本身,也就是说他们两个去掉了$的作用。

    注意创建完脚本文件后需要把该文件的执行权限加上,命令为:chmod +x  文件名

    在环境变量中,IFS表示输入域分隔符,用户可以将空格、制表符、换行符赋值给他,然后当shell读取输入时就可以安装IFS的值分隔单词,eg:

    可以看出“$@”是不受IFS影响的,"$*"则受IFS影响。

    布尔命令:test或者[]

    条件语句后面跟的条件可以放在test或者[]中

    模板为:if test 条件                        if [  条件 ]  要注意[]和条件语句之间要有空格隔开,并且等号左右都要有空格

        then                                then

          执行语句                               执行语句

        fi                                       fi

    比较的条件可以有字符串、算术、文件相关测试,一下三个表都来自于《linux程序设计(第4版)》

    if语句

    每组if语句都要使用fi做结束标志,eg:

    if 条件                        if 条件1

    then                            then

      语句1                          语句1

    else                         elif 条件2

      语句2                      then    

                                  语句2

    fi                          else

                                    语句3

                               fi

    for语句

    for语句一般针对于字符串

    模板: for 变量名 in 值的范围(一般为字符串)

        do 

          语句

       done

     

    while语句和until语句

    while和until语句的区别是:

    while语句至少执行一次,而until语句则不一定;while是条件为真时执行循环体,until是当条件不成立时执行循环体(如果判断某个用户登录的话用until语句比较合理)

    模板:while(until)条件

       do

          语句

       done

    case语句

    case语句的每个条件成立后执行语句体结束时一定要记得用两个;;表示结束,用esac表示case语句的结束

    模板:case 变量名 in

       值1) 语句体1

          语句体2;;

       值2) 语句体3;;

        ······

    esac

    exit 0

     

    判断条件的连接可以用AND:&&或者是OR:||,用法和c语言是一样的。

    函数:

    函数不用声明返回值类型,直接可以用:

      函数名(){

    }

    来定义函数体。

    如果函数需要操作从命令行输入的变量时,在函数体中可以用“$*”来指代该参数。

    其中调用函数时Child 后的$1表示脚本程序的参数,判断的是该函数的返回值

    冒号:表示的是空命令,while true就等价于while :

  • 相关阅读:
    腾讯微博模拟登录
    python 列表复制给另一个列表,改值两个列表均会改变(备忘)
    python3 re.compile中含有变量
    python3 pyinstaller生成exe文件过程问题解决记录
    python3 不知文件编码情况下打开文件代码记录
    python TKinter部分记录
    python3 列表去除重复项保留原序
    python 字典排序
    python 字典中 重复值去除
    python 一些方法函数
  • 原文地址:https://www.cnblogs.com/jiangcsu/p/5776575.html
Copyright © 2011-2022 走看看