• shell基础001


    #!/bin/bash

    1.变量
    脚本中定义和函数内部定义的变量默认为全局变量,作用域到脚本结束或删除为止。
    局部变量添加local关键字。局部变量函数外不能调用。

    shell中常见的系统变量:
    $0脚本,$n(1..)参数位置;$#命令行参数个数;$?;$$返回本程序的ID;
    $*以"参数1参数2参数3.。。"形式返回一个字符串。
    $@以"参数1"“参数2”“参数3”形式返回每个参数。

    环境变量:
    shell中的环境变量是所有shell程序都可以使用的变量。PATH,HOME,HISTFILE,HISTFILENAME,LOGNAME,等

    变量引用:注意一定是双引号“”,单引号内所有字符,均视为一般字符(全引用)
    echo "$v1" ###单独引用
    echo "${v1}abc" ###和其他子串一起

    2.字符串判断
    = !=
    -n string ;非空:判断它是否是 非空,是,返回0,
    -z string ;为空:判断它是否是 空,是空,返回0.

    3.整数运算符
    -eq ; -ne ; -gt ; -lt ; -ge ; -le ; + - */ ;%求余数 **幂运算
    a=`expr 2 + 10 `或 a = $((2+10)) 或 a = $[3+4];a=$[(1+2)*3]
    let n=n+1 :let 不需要$

    进制:数字前加0,为八进制;加0x为16进制。

    4.文件操作符
    test -a filename 或 【 -a filename 】;
    -a 存在 ;
    -b 文件存在且为块文件
    -c 文件存在,且为字符文件
    -d 文件存在,且为目录
    -s 非空文件
    -f 一般文件
    -L连接 ;-r 可读;-x可执行

    5.逻辑操作符
    -a ;and ; -o ;or
    6.其他;
    <<左移; >>右移; &按位与; |按位或; ~按位非; ^按位异或;++自增; --自减

    6.选择循环判断
    if
    多条件判断case:
    case variable in:
    value1)
    statement1
    statement2
    ...;
    value2)
    ...

    esac #####首位相顾


    for var in 1 2 3 4
    do
    done
    for var in {1 2 3 4}
    for var in {1..8}
    for var in {1..100..2}

    for ((i=1;i<5;i++)) ##############;语句分割;
    for var in ${array[*]}

    until expression
    do
    done ######直到满足expression,退出循环,不再执行
    循环删除用户
    i=1
    until [ $i -eq 21 ]
    do
    userdel -r user$i
    ler "i++"
    done

    shell中没print,有printf=echo -n
    可在一个主函数内调用多个其他函数。

    传参:
    1.
    shift参数左移,同时删除第一个参数
    2.getopt
    fun(){
    While getopts "a:b:c" arg
    do
    case
    esac
    done
    }
    fun -a opt01 -b opt02
    3.间接传递参数
    var=name
    name=john
    ${name} =john

    ${var}=name
    ${!var} = john
    4.传递数组参数
    func(){
    while [ $# -gt 0 ]
    do
    echo "$1"
    shift
    done
    }
    a=(a b "c" "d" e)
    #调用
    func "${a[@]}"

    ################################################################################3

    数组

    定义
    a[]=value;
    或declare -a array ,array[0]= ....
    或a=(a b c d)
    调用
    echo "${array[@]}"

    追加元素array[i]=value

    for i in {1..10}
    do
    array[$i]=$i
    done
    echo "${array[@]}"

    获取数组长度
    ${#array[@]} 或 ${#array[*]}
    切片:
    ${array[@]:start:length}
    数组元素的替换
    ${array[@]/pa/replacement} EG:${array[@]/3/10}:把3换成10

    删除数组元素
    unset array[n]
    删除整个数组
    unset array

    复制数组
    newarray=("${array[@]}")
    连接数组
    ("${array1[@]}" "${array2[@]}")
    加载文件内容到数组
    content=(`cat "demo.txt"`)

    for i in "${content[@]}"
    do
    echo "$i"
    done

  • 相关阅读:
    JS 跳转
    js 注意问题
    MySql 引擎
    openflashchart 与 FusionCharts 开发中使用
    MySql 字符串连接
    js 颜色选择器
    c#,winform,combobox联动 Virus
    c#,winform,验证输入内容,文本框,长度,errorprovider组件,方便,快捷 Virus
    c#,NHibernate,ASP.NET2.0,Winform Virus
    c#,小发现,关于程序当前目录的问题,Environment.CurrentDirectory,Application.StartupPath; Virus
  • 原文地址:https://www.cnblogs.com/bernard-shen/p/13170663.html
Copyright © 2020-2023  润新知