• shell琐碎


    shell程序的基本特征(解释型语言):

    1.所有shell程序第一行都是以#!开头,后面跟上执行此shell程序的shell解释器的完整路径。

    2.习惯在程序的第二行以注释的方式写出程序的名称。

    3.最简单的shell程序就是一组shell命令的堆砌。

    4.shell程序就是普通的文本文件,添加可执行权限后方可执行(chmod +x *.sh)。


    shell中的变量分为:局部变量,环境变量,位置变量。

    shell是一种解释型语言,与C、JAVA不同,在编程时无需事先声明变量,当对一个变量赋值时也就定义了该变量。局部变量:只在当前的进程和程序中有效的变量。

    shell中的变量是无数据类型的,可以使用同一变量存放不同类型的值。变量赋值后只需在变量前加$符号,即可访问变量的值。可用赋值符号(=)为变量赋值,变量的值如果不是带空格的字符串则可不必加引号。变量输出使用的指令:echo。


    环境变量:一个用户的所有进程中都可以访问的变量。

    export命令查看系统的环境变量列表。

    环境变量的访问:需要在一个环境变量前加一个$符号

    环境变量的定义:使用export命令定义环境变量,环境变量的名称一般都是大写的。

      export XX=123 此种定义在重新引导系统时会失效。

      echo $XX

    在系统配置文件中定义环境变量:上面定义的环境变量,只在当前shell中运行的所有进程中有效。可以在系统配置中加入这些环境变量的定义。在环境变量配置文件/etc/profile中定义两个环境变量:

      export A1=hell

      export A2=123


    位置变量:是shell程序在运行时传入的参数。程序中可以用变量的形式来调用这些参数。这些参数存放在1到9的9个特殊的变量名中,被形象的称为位置变量。同普通变量一样,位置变量用前缀$加数字来表示。如:第5个参数,表示为$5。


    shell中的不常用的运算符:**对两个变量的幂运算,+=,%=,/=...

      t=`expr $1**$2`(注意反单引号,命令替换)    #用expr改变运算顺序,求x的y次方。($1$2位置变量)

      t=$[t*3]

      s=$[s+t]

    (+-*/两边要有空格)


     输入和输出


      echo $str

      echo $str>file    #将结果报错到file中,如果没有文件会新建一个文件。如果已经有文件则会覆盖以前的文件。

      echo $str>>file   #将结果追加到文件file中。

    echo输出的内容可以有下面的格式控制字符:

      \c:末尾追加上\c表示这一行输出完毕后不换行。

      \t:输出一个挑个,相当于按下‘tab’键。

      \n:输出一个换行。


    read:从键盘或文件中读入信息,并赋给一个变量。

    如果多个变量时多个变量用空格隔开。

    在读取语句后天就<filename,表示从文件中读取数据并赋给变量。


    文件重定向:执行命令时指定命令的输入、输出和错误的输出和出入方式。

    (修改了默认的数据流向)(输出>、>> 输入<)(标准输入0,标准输出1,标准错误2)

    command>filename        把标准输出重定向到一个文件中(会清空原有内容)

    command>>filename      追加方式

    command 1>filename     标准输出设备编号为1,上面的省略了,其实是等价的

    command>filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(2表示标准错误)

    command 2>filename    把标准输出的错误重定向到一个文件中

    command>>filename 2>&1  把标准输出和标准错误一起追加到一个文件中

    command< filename > filename2  把command命令以filename文件作为标准输入,以filename2文件作为标准输出

     command < filename


    shell 中的单引号、双引号、反引号、反斜线在命令中的特殊含义。

    双引号:引用一个字符串。字符串里不能直接使用$、引号、双引号、反斜线、反引号这些特殊符号。如果字符串里没有空格,则与不使用双引号效果相同。

    单引号:引用一个字符串,并忽略特殊符号。如果双引号中再使用单引号,则输出时会输出这个单引号。

    双引号要想输出双引号,要用反斜线。单引号的字符串如果要包含单引号,也要用反斜线。字符串中要使用单引号,可以用双引号将其引起来,避免使用反斜线。单引号中使用双引号,也不需使用反斜线。

    反引号用于执行引号中的系统命令,并将命令结果返回,返回结果可赋给一个变量。(命令替换)

    反斜线对特殊符号转义。

      var1=1000

      echo "hello linux $var1"  

      结果:hello linux 1000

      var1=1000

      echo ’hello linux $var1

      结果:hello linux $var1

      echo "hello "linux""

      结果:hello linux

      echo "hello \"linux\""

      结果:hello "linux"

      echo 'hello "linux"'

      结果:hello "linux"


    测试语句

    对变量大小、字符串、文件属性等内容进行判断。

    test 字符串、数字、文件状态等内容的测试。

    文件状态测试:文件的权限、有无、属性、类型等内容进行判断。与其他语言不同的是,test命令的测试结果,返回0时表示测试成功。返回1时表示测试失败。

    文件状态测试表

    -d测试文件是否是目录文件。 -s测试文件是否非空。
    -f测试文件是否是正规文件。 -w测试文件是否可写。
     -L测试文件是否是是符号链接文件。 -u测试文件是否有suid位设置。
     -x测试文件是否可执行。 -r测试文件是否可读 。

     数值测试:比较两个数值大小或相等关系,相当c中的比较运算符。shell中的数值测试有下面2种情况。

     1.test 第一个操作数 操作符 第二个操作数

    2.用中括号代替test命令。[ 第一个操作数 操作符 第二个操作数 ] 注意括号处有空格。

     数值比较符表

    -eq是否相等 -ne是否不等
    -le第一个数是否不大于第二个数 -ge第一个数是否不小于第二个数
    -gt第一个数是否大于第二个数 -lt第一个数是否小于第二个数

     

     逻辑测试:将多个条件进行逻辑运算,常用作循环语句或判断语句的条件。

    三种逻辑测试:-a逻辑与;-o逻辑或;!逻辑非,条件为假时结果为真;

    字符串测试:是否相等或为空。

    test 字符串 字符串比较符 字符串      [ 字符串 字符串比较符 字符串 ]

    test 字符串1  字符串比较符 字符串2       [ 字符串1 字符串比较符 字符串2 ]

    字符串比较符:=;!=;-z(测试字符串是空字符串);-n(测试字符串是非空字符串)


    流程控制结构


    if 条件1

      then 命令1

    elif 条件2

      then 命令2

    else 命令3

    fi

    if 条件1;then 命令1

     elif 条件2; then 命令2

     else 命令3

    fi

    #!/bin/bash

    # judge a file is writeable

    if test -z $1

      then echo 'please input a file name'

    else

      if test -w $1

        then echo "writeable"

      else

        echo "unwriteable"

      fi

      if test -x $1

        then echo "executeable"

      else

        echo "unexecuteable"

      fi

    fi


    for 变量名 in 列表

    do

      命令1

      命令2...

    done

    for char in a s d f g

    do

      echo $char

    done

    for str

    do

      echo $str

    done

    (从位置变量列表读)

  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/IceKernel/p/2652025.html
Copyright © 2020-2023  润新知