zoukankan      html  css  js  c++  java
  • 【Linux】【Shell】【Basic】变量与数据类型

    1. 变量:

    1.1. 局部变量:作用域是函数的生命周期;在函数结束时被自动销毁;

     定义局部变量的方法:local VARIABLE=VALUE

    1.2. 本地变量:作用域是运行脚本的shell进程的生命周期;因此,其作用范围为当前shell脚本程序文件;

    1.3. 环境变量

    1.4. 位置参数变量:向脚本传递参数

    例如:myscript.sh  argu1 argu2

    引用方式:$1,  $2, ..., ${10}, ${11}, ...,大于一位数的要用大括号引起来

    轮替:shift  [n]:位置参数轮替;

    练习:写一脚本,通过命令传递两个文本文件路径给脚本,计算其空白行数之和;

    #!/bin/bash
    #
    file1_lines=$(grep "^$" $1 | wc -l)
    file2_lines=$(grep "^$" $2 | wc -l)
    echo "Total blank lines: $[$file1_lines+$file2_lines]"
    

      

    1.5. 特殊变量

    $0:脚本文件路径本身;
    $#:脚本参数的个数;
    $*:所有参数
    $@:所有参数

    2. 数据类型:

    2.1. 字符型:所有变量默认都为字符型

    2.2. 数值型

    2.2.1. 算术运算:+, -, *, /, %, **

    定义方式:

    let  VAR=expression
    
    VAR=$[expression]
    
    VAR=$((expression))
    
    VAR=$(expr argu1 argu2 argu3)
    

    注意:有些时候乘法符号需要转义

    2.2.2. 增强型赋值:变量做某种算术运算后回存至此变量中;+=,-=,*=, /=, %=

    let i=$i+#
    let i+=#
    #自增:
    VAR=$[$VAR+1]
    let  VAR+=1
    let  VAR++
    #自减:
    VAR=$[$VAR-1]
    let  VAR-=1
    let  VAR--
    

      

    2.2.3. 判断赋值:

    2.2.4. 练习:

    计算/etc/passwd文件中的第10个用户和第20个用户的id号之和;

    id1=$(head -10  /etc/passwd | tail -1  | cut  -d:  -f3)
    id2=$(head -20   /etc/passwd | tail -1  | cut  -d:  -f3)
    

    计算/etc/rc.d/init.d/functions和/etc/inittab文件的空白行数之和;

    grep "^[[:space:]]*$"   /etc/rc.d/init.d/functions | wc -l
    

      

  • 相关阅读:
    2017.10.04
    2017.10.03
    Luogu P3110 [USACO14DEC]驮运Piggy Back
    Luogu P2176 [USACO14FEB]路障Roadblock
    Luogu P3797 妖梦斩木棒
    数列分块入门1-9 By hzwer
    CodeForces 【20C】Dijkstra?
    Luogu P2835 刻录光盘
    Luogu P1692 部落卫队
    Luogu P2847 [USACO20DEC]Moocast(gold)奶牛广播-金
  • 原文地址:https://www.cnblogs.com/demonzk/p/6514275.html
Copyright © 2011-2022 走看看