zoukankan      html  css  js  c++  java
  • shell快速入门

    $? 表示上一个命令退出的状态,0表示执行正常,不等于0表示执行不正常。
    $$ 表示当前进程编号
    $0 表示当前脚本名称
    $# 表示参数的个数,常用于循环
    $*和$@ 都表示参数列表 
    $n 表示n位置的输入参数(n代表数字,n>=1)
    传递参数这个和c语言等是一样的。类似与下面这样。
    ./test.sh 1 2 3
    接受参数像下面这样处理
    #分别表示第一个参数,第二个参数,第三个参数
    inputfile1=$1
    inputfile2=$2
    inputfile3=$3

    read:

    #!/bin/bash
    read -p "请输入你的名字:" name
    echo $name

     

    for循环

    #下面这两种形式
    #!/bin/bash
    for N in 1 2 3
    do 
       echo $N 
    done
    
    for((i=1;i<=5;i++))
    do
      echo "weclome $i"
    done

    while循环

    #!/bin/bash
    i=1
    while((i<=5))
    do
      echo "welcome $i"
      let i++
    done

    case匹配

    #!/bin/bash
    
    case $1 in
    start)
       echo "starting"
       ;;
    stop)
       echo "stoping"
       ;;
    *)
      echo "没有匹配的"
    esac

    if判断

    #!/bin/bash
    
    read -p "请输入用户名" NAME
    printf '%s
    ' $NAME
    if [ $NAME = root ]
       then
            echo "欢迎你 ${NAME}"
    elif [ $NAME = magic ]
       then
            echo "欢迎你,${NAME}"          
    else
            echo "你是谁,滚犊子"
    fi

    比较

    # 字符串比较
    
    -lt 小于
    -le 小于等于
    -eq 等于
    -gt 大于
    -ge 大于等于
    -ne 不等于
    
    
    -e 判断对象是否存在
    -d 判断对象是否存在,并且为目录
    -f 判断对象是否存在,并且为常规文件
    -L 判断对象是否存在,并且为符号链接
    -h 判断对象是否存在,并且为软链接
    -s 判断对象是否存在,并且长度不为0
    -r 判断对象是否存在,并且可读
    -w 判断对象是否存在,并且可写
    -x 判断对象是否存在,并且可执行
    -O 判断对象是否存在,并且属于当前用户
    -G 判断对象是否存在,并且属于当前用户组
    -nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
    -ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

    字符串

    #获取字符串长度
    string="abcd"echo ${#string} #输出 4
    
    #提取子字符串 
    #以下实例从字符串第 2 个字符开始截取 4 个字符:
    string="turtle is a great site"echo ${string:1:4} # 输出 le
    
    
    #查找子字符串
    #查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
    string="runoob is a great site"
    echo `expr index "$string" io`  
    # 输出 4

    数组

    (1)定义数组
    #在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。
    array_name=(value0 value1 value2 value3)
    
    (2)读取数组
    读取数组元素值的一般格式是:
    ${数组名[下标]}
    例如
    valuen=${array_name[n]}
    #使用 @ 符号可以获取数组中的所有元素:
    echo ${array_name[@]}
    
    (3)获取数组的长度
    获取数组长度的方法与获取字符串长度的方法相同,例如:
    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}

    函数

    #!/bin/bash
    function print_msg {
        echo "Hello, World"
    }
    print_msg
    
    
    #或
    print_msg() {
        echo "Hello, World"
    }
    print_msg

    案例一

    进度条:

    #!/bin/sh  
    b='' 
    for ((i=0;$i<=100;i+=2))  
    do  
            printf "progress:[%-50s]%d%%
    " $b $i  
            sleep 0.1  
            b=#$b  
    done  
    echo 
    
    
    [root@ngsocdev13 ~]# sh print200.sh 
    progress:[##################################################]100%

      

     

  • 相关阅读:
    统计学习方法 | 第1章 统计学习方法概论
    统计学习方法 | 第2章 感知机
    LeetCode | DP专题详解
    论文阅读 | Towards a Robust Deep Neural Network in Text Domain A Survey
    DFS(深度优先搜索)和BFS(广度优先搜索)
    Analysis Methods in Neural Language Processing: A Survey
    Spring AMQP 发送消息到 RabbitMQ 收到 x-queue-type 错误
    Gradle 的项目导入到 IntelliJ 后子项目源代码不能导入
    在 CentOS 7 上安装 RabbitMQ
    IntelliJ IDEA 运行项目的时候提示 Command line is too long 错误
  • 原文地址:https://www.cnblogs.com/shwang/p/11821396.html
Copyright © 2011-2022 走看看