美文网首页
linux基础学习002

linux基础学习002

作者: 千转军师 | 来源:发表于2020-12-29 20:41 被阅读0次

    作者:along
    时间:2020年12月29日20:01:16

    1、gcc编译

    gcc 支持的后缀名

    后缀名 对应的语言
    .c C原始程序
    .C/.cc/.cxx C++原始程序
    .m Objective-C原始程序
    .i 已经预处理的C原始程序
    .ii 已经预处理的C++原始程序
    .s/.S 汇编语言原始程序
    .h 预处理文件(头文件)
    .o 目标文件
    .a/so 编译后的库文件

    2、shell脚本的一些命令

    • read
      从终端中读取内容
      常用参数 -p -t -s
      -p:信息提示
      -t:超时时间
      -s:内容隐藏
      例子:
    read -p "请输入一个数字" -t 4 -s var
    

    注:该例子中,输入的内容会存于 var


    3、shell脚本

    它交互地解释和执行用户输入的命令(命令解释器)
    (1)交互式的执行 :用户输入一条指令,shell 解释并执行一条指令
    (2)批处理式的执行 :可以将多条指令集中在同一个文本当中,运行一次文本,执行多条指令

    3.1 运行脚本

    • 运行方式
      1、bash t.sh
      2、sh t.sh
      3、./t.sh (需要复制最高权限,用 chmod 0777 t.sh命令)
    • 例子
      t.sh
    #!/bin/sh
    echo "OK"
    

    3.4 变量类型

    • 局部变量
      局部变量就是在一个脚本当中被定义的,它只能运行在当前这个脚本当中,即它的作用范围就在当前脚本当中。
    • 环境变量
      不管是shell 脚本还是其他程序共同所依赖的环境,被称为系统环境变量。
    • shell 变量
      shell编程有特殊定义的一批变量,也被称作特殊变量
    变量名 描述
    $0 获取当前脚本的脚本名称
    $1 获取从终端传递到当前脚本的第一个参数
    $2 获取从终端传递到当前脚本的第二个参数
    ...
    $# 获取从终端传递到shell 脚本中参数的个数
    $* 获取从终端传递的所有参数
    $@ 获取所有的参数与$* 保持一致
    $? 获取程序退出状态 可以当前函数的返回值来, 0 代表正常退出 非0值代表异常退出
    $$ 获取当前运行脚本的进程ID号

    例子:

    #!/bin/sh
    echo "当前脚本名称:$0"
    echo "当前脚本的第一个参数:$1"
    echo "当前脚本的第二个参数:$2"
    echo "当前脚本中传递的所有参数个数:$#"
    echo "当前脚本中的所有参数:$*"
    echo "当前脚本中所有的参数:$@"
    echo "当前脚本的退出状态:$?"
    echo "当前脚本的进程ID号:$$"
    

    3.3 变量操作

    • 新增变量并赋值
    var=123
    str=aa
    echo "${var}"
    echo "$str"
    

    注:
    (1)定义一个变量 : 变量必须是以数字 字符 下划线组成,定义变量的时候不能有 $出现 ,变量中还不能出现shell脚本中的关键字 ;
    (2)变量的赋值: = 赋值号两边不能有空格出现 否则报错 ;
    (3)取变量的值: ${变量名称} \ $变量名称 ,花括号的作用是为了分别变量名的边界 shell 中变量取值加与不加花括号 都可以合法取值。 建议在实际编写过程中加上 ,养成好的编程习惯 ;
    (4)同一个变量 多次赋值以最后一次赋值为标准 。

    • 删除变量
      unset命令
      例子(运行报错):
    var=123
    unset var
    echo "${var}"
    
    • 只读变量
      readonly 命令,该变量不能用unset命令删除
      例子(运行报错):
    readonly var=123
    unset var
    echo "${var}"
    

    3.4 运算符

    包括算术运算符和关系运算符等。

    • 两数相加
    #!/bin/sh
    var=4
    ptr=2
    sum=`expr ${var} + ${ptr}`
    echo "${sum}"
    

    (1)做算术运算的时候需要关键字 expr ,整个表达式必须通过 ` 符号来括起来;
    (2) 算术运算符两边必须有空格,否则出错 ,比如: 2+3 语法不对 2 + 3 算术运算符两边必须有空格 。

    • 算术运算符 + - * /
      1、例子
    #!/bin/sh
    var=4
    ptr=2
    
    sum1=`expr ${var} + ${ptr}`
    echo "${sum1}"
    sum2=`expr ${var} - ${ptr}`
    echo "${sum2}"
    sum3=`expr ${var} \* ${ptr}`
    echo "${sum3}"
    sum4=`expr ${var} / ${ptr}`
    echo "${sum4}"
    

    2、算术运算符列表

    运算符 说明 例子(a=10,b=20)
    + 加法 `expr ${a} + ${b}` 结果为30
    - 减法 `expr ${a} - ${b}` 结果为-10
    * 乘法 `expr ${a} * ${b}` 结果为200
    / 除法 `expr ${a} / ${b}` 结果为0.5
    % 取余 `expr ${a} % ${b}` 结果为10
    = 赋值 a=${b} 将b的数值赋值给a
    == 相等(比较两个数字,相同则返回true) [ ${a} == ${b} ] 返回false
    != 不相等(比较两个数字,不相等则返回true) [ ${a} != ${b} ] 返回true
    • 关系运算符
    运算符 描述
    -eq 相等
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于
    -ne 不等于

    用于判断左值和右值的大小关系
    例子:

    #!/bin/sh
    echo "请输入var1的值:"
    read var1
    echo "请输入var2的值:"
    read var2
    if [  ${var1}  -eq ${var2} ]
    then
        echo "$var1 == $var2"
    fi
    #=========================
    if [  ${var1}  -gt  ${var2} ]
    then
        echo "$var1 > $var2"
    fi
    #=========================
    if [  ${var1}  -lt ${var2} ]
    then
        echo "$var1 < $var2"
    fi
    #=========================
    if [ ${var1} -ge ${var2} ]
    then
        echo "${var1} >= ${var2}"
    fi
    #=========================
    if [ ${var1} -le ${var2} ]
    then
        echo "${var1} <= ${var2}"
    fi
    #=========================
    if [ ${var1} -ne ${var2} ]
    then
        echo "${var1} != ${var2}"
    fi
    

    3.5 shell字符串

    字符串是shell 编程中最常用最有用的数据类型(只有数字和字符串)字符串可以用单引号,也可以用双引号,也可以不用引号。

    注:整个 shell 编程中只有 数字与字符串 没有具体的数据类型

    • 例子
    #!/bin/sh
    var=10
    echo "${var}"
    echo ${var}
    echo '${var}'
    

    结果

    [root@liu SH]# ./t.sh 
    10
    10
    ${var}
    

    结论:在取变量的值的时候可以加双引号也可以不加双引号 都可取出变量的值,但如果加单引号取变量的值 整个变量会原样输出。

    3.6 shell数组

    语法:数组名=(元素1 元素2 元素3)
    例子:

    #!/bin/sh
    array=(11 13 16 21)
    echo "$0"
    echo "${array[0]}"
    echo "${array[1]}"
    echo "${array[*]}"
    echo "${array[@]}"
    echo "${#array[*]}"
    echo "$?"
    echo "$$"
    

    总结:array[0]表示取数组的第一个元素
    array[*]和array[@]表示取数组的全部元素
    #array[*]表示取得数组元素的个数

    3.7 流程语句

    3.7.1 if else 语句

    (1)语法:

    if [ 条件表达式 ]
    then
      语句1
      语句2
      ......
    fi 
    

    (2)例子

    #!/bin/sh
    var1=111
    var2=111
    if [ ${var1} -eq ${var2} ]
    then
        echo "${var1} == ${var2}"
    fi
    

    (3)拓展
    语法:

    if [ 条件表达式 ]
    then
      语句1
      语句2
      ......
    else
      语句1
      语句2
      ......
    fi 
    

    或者

    if [ 条件表达式 ]
    then
      语句1
      语句2
      ......
    elif [ 条件表达式 ]
      语句1
      语句2
      ......
    else
      语句1
      语句2
      ......
    fi 
    
    3.7.2 case esac语句

    类似于c语言的switch case语句
    语法:

    case 变量名 in
    变量1)
    语句1
    ;;(双分号)
    变量2)
    语句2
    ;;(双分号)
    ......
    *)
    语句
    esac
    

    例子:

    #!/bin/sh
    read var
    case ${var} in
    "a1")
    echo "var is ${var}"
    ;;
    "a2")
    echo "var is ${var}"
    ;;
    "a3")
    echo "var is ${var}"
    ;;
    *)
    echo "* case, var is ${var}"
    esac
    

    其中 *) 代表其他情况。

    3.7.3 for循环

    语法:

    for NUM(变量) in 元素1 元素2 元素3 ......
    do
      执行的语句
    done
    

    for循环执行的次数即元素的个数
    例子:

    #!/bin/sh
    for var in 1 2 3 4
    do
      echo "var is ${var}"
    done
    
    3.7.3 while循环

    语法:

    while [ 条件表达式 ]
    do
      执行语句
    done
    

    例子:

    #!/bin/sh
    i=0
    while [ ${i} -lt 6 ]
    do
      echo "i is ${i}"
      i=$((i+1))
    done 
    

    3.8函数

    (1)格式

    function()
    {
      List of commands
      [return value]
    }
    

    也可以在函数名前加上关键字function:
    例如

    function fun()
    {
      List of commands
      [return value]
    }
    
    • 函数返回值,可以显示增加return 语句;如果不加,会将最后一条命令运行结果作为返回值。
    • Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果return其他数据。
    • 如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。

    (2)例子

    #!/bin/sh
    function fun()
    {
        var1=1
        var2=2
        echo "var1=${var1} var2=${var2}"
        return $((var1 + var2))
    }
    fun
    echo $?
    

    (3)关于函数的参数
    函数的参数可以用$n来获取,其中n代表参数的序号
    例子:

    #!/bin/sh
    function fun()
    {
        echo "para1=$1 para2=$2"
    }
    fun 4 5
    

    相关文章

      网友评论

          本文标题:linux基础学习002

          本文链接:https://www.haomeiwen.com/subject/mryqoktx.html