zoukankan      html  css  js  c++  java
  • shell常用标识符及应用范例

    前言:

    Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里以备查看。

    一、基础篇

    1.对文件的判断:(命令执行成功返回值是0,不成功则是非0)

    -e filename 如果 filename存在,则为真

    -d filename 如果 filename为目录,则为真

    -f filename 如果 filename为常规文件,则为真

    -L filename 如果 filename为符号链接,则为真

    -r filename 如果 filename可读,则为真

    -w filename 如果 filename可写,则为真

    -x filename 如果 filename可执行,则为真

    -s filename 如果文件长度不为0,则为真

    -h filename 如果文件是软链接,则为真

    2.逻辑判断标识:

    -eq           //等于

    -ne           //不等于

    -gt            //大于 (greater )

    -lt            //小于  (less)

    -ge            //大于等于

    -le            //小于等于

    3.特殊变量列表:

    变量

    含义

    $0

    当前脚本的文件名

    $n

    传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

    $#

    传递给脚本或函数的参数个数。

    $*

    传递给脚本或函数的所有参数。

    $@

    传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。

    $?

    上个命令的退出状态,或函数的返回值。

    $$

    当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

    4.特殊字符的表达:

     退回  
    c 打印一行时没有换行符 这个我们经常会用到  
    f 换页  
     回车  
     制表  
    v 垂直制表  
    \ 反斜线本身 

    5.运算符及其优先级:

    级别

    运算符

    说明

    13

    -, +

    单目负、单目正

    12

    !, ~

    逻辑非、按位取反或补码

    11

    * , / , %

    乘、除、取模

    10

    +, -

    加、减

    9

    << , >>

    按位左移、按位右移

    8

    < =, > =,  < , >

    小于或等于、大于或等于、小于、大于

    7

    = = , ! =

    等于、不等于

    6

    &

    按位与

    5

    ^

    按位异或

    4

     |

    按位或

    3

    &&

    逻辑与

    2

    | |

    逻辑或

    1

    =, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> =

    赋值、运算且赋值

    二、基础循环及其应用范例:

    1.单if与if/elif嵌套:

    if 条件表达式  
    then #当条件为真时执行以下语句  
    命令列表  
    else #为假时执行以下语句  

    if 条件表达式  
    then #当条件为真时执行以下语句  
    命令列表  

    elif #当条件为真时执行以下语句  

    命令列表

    elif #当条件为真时执行以下语句  

    命令列表

    else #执行以下语句

    命令列表

    2.case多分支结构:

    case $newval in

    1)          #这里是可能值1

    echo 1

    ;;      #表示第一个分支结束

    2)           #这里是可能值 2

    echo 2

    ;;      #第二个分支结束

    *)      #表示其他可能值,必须在最后,否则他后面的语句无法执行

    echo unkown

    esac    #case 语句结束

    3.for枚举法与累加格式:

    枚举:

    for n in {1..10}

    do

    echo $n

    done

    累加:

    for (( i=1;$i<10;i++))

    do

    echo $i

    done

     

    for(( i=1;$i<10;i=$[$i+1’ ])

    do

    echo $i

    done

    4.while循环读取 文本:

    while read filename

    do

      echo $filename

    done < names.txt

    三、一些注意事项:

    1.break 命令不执行当前循环体内break下面的语句从当前循环退出.  

     continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行.

    2.将脚本或者命令放到后台执行:

    1)在命令后加上 & 字符来实现,需要注意的是输出进程号:sh 1.sh &

    2)在命令前使用:nohup command > log.file 2>&1 &

    3)将后台运行的程序切回到前台:#fg %2

    3.匹配IP地址:

    [0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}   匹配是否为IP地址

    4.shell自增的五种办法:

     i=`expr $i + 1`;
     let i+=1;
     ((i++));
     i=$[$i+1];
     i=$(( $i + 1 ))

    另外,对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;实例如下:

    #!/bin/bash
    for j in $(seq 1 5)
    do
    echo $j
    done

    值得注意的是seq默认从1开始计数,如:seq 5,则表示1-5的数字,其次,seq -w 表示输出同位数的数字序列,如:seq -w 999 ,则表示从001打印数字到999

    5.使用命令来修改密码:

    echo 密码 | passwd --stdin 用户名;

    附:打印时的字体颜色设置:

    echo 输出的字颜色

    echo -e ‘e [1;31m this is red color.e[0m’

    ansi 控制码表及颜色代码

    
    

    背景颜色范围:

    40--49  

    字休颜色: 30--39

    ANSI控制码:

    40: 黑

    30: 黑

    33[0m 关闭所有属性

    41: 红

    31: 红

    33[1m 设置高亮度

    42: 绿

    32: 绿

    33[4m 下划线

    43: 黄

    33: 黄

    33[5m 闪烁

    44: 蓝

    34: 蓝

    33[7m 反显

    45: 紫

    35: 紫

    33[8m 消隐

    46: 深绿

    36: 深绿

    33[30m -- 33[37m 设置前景色
        33[40m -- 33[47m 设置背景色
        33[nA 光标上移n行
        33[nB 光标下移n行
        33[nC 光标右移n行
        33[nD 光标左移n行
        33[y;xH 设置光标位置
        33[2J 清屏
        33[K 清除从光标到行尾的内容
        33[s 保存光标位置
        33[u 恢复光标位置
        33[?25l 隐藏光标
        33[?25h 显示光标
    附:补充
  • 相关阅读:
    String分割成int[]和List<Integer>
    linux查询正在运行的jar包并kill进程
    linux自动清理n天(1个月)前日志文件
    zookeeper命令行操作
    sql开窗函数
    hdfs shell操作
    centos7安装mysql8
    hadoop集群安装
    hdfs基本介绍
    IDEA下运行MAVEN项目,报"程序包******不存在"
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11503777.html
Copyright © 2011-2022 走看看