zoukankan      html  css  js  c++  java
  • shell入门及实践

    解释器

    解释器是一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行

    #!/bin/bash(默认),指定解释器

    #!/bin/bash
    #这是第一个shell脚本
    #by uncleyong
    echo ‘hello, shell'
    

    变量

    shell的变量不需要先声明,可以直接使用,eg:a=15

    调用变量的话 $a 或者 ${a},建议用后者,这样可以和其它字符串拼接

    $?, 判断上一条命令是否成功,0表示成功,其它表示不成功

    $0,返回脚本的文件名称

    $1-$9,返回对应的参数值

    $*,返回所有的参数值是什么

    $#,返回参数的个数和

    #!/bin/bash
    #by uncleyong
    
    echo "脚本名称:$0"
    echo "第一个参数是:$1"
    echo "第二个参数是:$2"
    echo "一共有多少参数:$#"
    echo "这些参数是:$*"
    

    常用符号

    > ,会覆盖原有的内容

    >> ,不会覆盖原有的内容

    ; ,分号,执行多条命令,cat 1.txt; ls

    | ,管道符,ps –ef | grep xxx

    && ,前面的命令执行成功,后面的才可以执行

    || ,前面的命令执行失败,后面的才可以执行

    “” ,双引号中的变量输出变量值

    ‘’ ,单引号中的变量输出本身

    `` ,输出命令结果 eg:a=`date`;echo $a

    整数运算符

      expr 1 + 2

      echo $[1 + 2]

      echo $((1 + 2))

      注意: expr加号两边要有空格,a=1;b=2;expr $a + $b; echo $[a+b]; echo $((a+b))

    余 

    小数

    bc计算器

    保留多少位小数可以通过scale,echo "scale=2;3/2" | bc

    条件判断

    文件目录

    语法:[ 判断表达式 ],注意,[]内部左右要有空格

    -e 目标是否存在

    [ -e test.sh ] || touch test.sh

    -d 是否为路径

    [ -d /root/test ] && echo "/root/test存在"

    -f 是否为文件

    [ -f test.sh ] && echo "是文件"

    权限

    -r 是否有读取权限

    -w 是否有写入权限

    -x 是否有执行权限

    [ -x test.txt ] && echo '有执行权限'

    字符串

    [ `echo '1.2 < 2.1' | bc` -eq 1 ] && echo '小于'

    if

    #!/bin/bash
    if [ $1 -eq $2 ]
    then
    echo "$1 等于 $2"
    else
    echo "$1 不等于 $2"
    fi

    键盘输入分数,显示成绩等级

    [ -z STRING ] “STRING” 的长度为零则为真。

    2> /dev/null;then,下面判断报错的时候输出到无底洞

    #!/bin/bash
    read -p "请输入你的分数:" score
    if [ -z $score ];then
    echo "你还没有输入分数"
    exit
    fi
    if [ $score -ge 0 ] 2> /dev/null && [ $score -lt 60 ];then
    echo "差"
    elif [ $score -lt 80 ] 2> /dev/null;then
    echo "中"
    elif [ $score -lt 90 ] 2> /dev/null;then
    echo "良"
    elif [ $score -lt 101 ] 2> /dev/null;then
    echo "优"
    else
    echo "分数值为0~100之间"
    fi
    

    case

    case 变量 in 
    值1 )
    执行动作1
    ;;
    值2 )
    执行动作2
    ;;
    ....
    esac
    

    输入性别,输出对应的结果

    #!/bin/bash
    echo '请输入性别:'
    read sex
    case $sex in
    '男')
    echo '帅哥'
    ;;
    '女')
    echo '美女'
    ;;
    * )
    echo '输入有误请重新输入'
    ;;
    esac
    

    键盘输入分数,显示成绩等级

    #!/bin/bash
    case $1 in
    [0-9]|[0-5][0-9]) echo "差" ;;
    [6-7][0-9]) echo "中" ;;
    [8][0-9]) echo "良" ;;
    [9][0-9]) echo "优" ;;
    100) echo "优,太棒了,满分" ;;
    *) echo "输入不符合规则,分数值为0~100之间" ;;
    esac

    for

    #!/bin/bash
    #打印1-10这10个数字之和
    sum=0
    for ((i=1;i<11;i++))
    do
    sum=$(($sum + $i))
    done
    echo $sum
    

    while

    #!/bin/bash
    #打印1-10这10个数字之和
    sum=0
    n=1
    while [ $n -lt 11 ];do
    sum=$(( $sum + $n )) 
    n=$(( $n + 1 ))
    done
    echo $sum
    

    输入输出

    read -参数

    -p:给出提示符,不支持" "换行

    -s:隐藏输入的内容

    -t:给出等待的时间,超时会退出read

    #!/bin/bash
    read -p "请输入密码:" pass
    echo '你输入的密码是:'$pass
    

    字体特效

    字体色30-37:
      echo -e "33[31m 红色字 33[0m”
    背景色40-47:
      echo -e "33[47;34m 白底蓝字 33[0m"
    特效
      echo -e "33[1m 高亮度 33[0m"
      echo -e "33[4m 下划线 33[0m"
      echo -e "33[5m 闪烁 33[0m"

    #!/bin/bash
    read -p "`echo -e "33[31;1;4;5m 请输入您的密码: 33[0m"`" pass
    echo '你输入的密码是:'$pass
    

    综合应用

    见jenkins中编写的shell脚本。 详见自动化持续集成。

  • 相关阅读:
    seajs快速了解
    lazyload.js详解
    iScroll-js—“smooth scrolling for the web”
    Backbone学习笔记一Backbone中的MVC
    JMH基准测试框架
    idea 下运行安卓项目
    安卓
    C++
    看完
    四叉树的js实现
  • 原文地址:https://www.cnblogs.com/uncleyong/p/10740737.html
Copyright © 2011-2022 走看看