• Shell 知识点2020


    语法相关

    shell 脚本中的空格语法

    =
    赋值的时候, 左右不留空格.

    对比的时候, 左右要留空格.

    中括号 [] 与其中间的代码应该有空格隔开

    大括号

    在Linux中, 有时候使用{}来表示, 当前命令同时对多个值进行操作, 中间用,分隔.
    像是ls 一般情况下下个ls 只能看到当前或指定目录.
    如果是ls {.,../,../../}, 则依次输出三个目录情况

    .:
    bin  GNU-AGPL-3.0  MPL-2  README  THIRD-PARTY-NOTICES
    
    ../:
    mongodb  mysql
    
    ../../:
    bin   dev  home         lib    media  opt   root  sbin  sys  usr
    boot  etc  jettodevops  lib64  mnt    proc  run   srv   tmp  var
    

    = 和 ==

    在对字符串进行操作的时候 = ==是等价的.
    在对数字进行操作的时候, 有区别, =会被看作,是赋值.
    所以, 一般情况下, 对比的情况下尽量用==,赋值用=


    实操

    直接kill掉查找出来的对应进程

    # 查找过滤mysql相关进程
    ps -ef |grep mysql
    # 输出对应进程号
    ps -ef |grep mysql|awk '{print $2}'
    
    # kill 掉查出来对应的进程号, 但是会提交某个进程找不到.(ps -ef的时候会显示查找进程本身, 结束查找后就没有该进程了)
    kill -9 `ps -ef |grep mysql|awk '{print $2}'`
    
    # kill 掉查出来对应进程(除grep进程)外的所有进程
    kill -9 `ps -ef |grep mysql|grep -v grep|awk '{print $2}'`
    
    
    ## 另一种实现方式
    # 不是通过``符号改变优先级, 而是添加对应的`kill -9`的输形成整体作为一个命令, 传给`sh`
    ps -ef|grep mysql|grep -v grep|awk '{print "kill -9 "$2}'|sh
    
    

    Linux只删除文件

    # 列举目录下所有文件, 过滤,
    ls |grep -v .jar|grep -v test|xargs rm -rf
    

    字符串转换大小写

    1. typeset 命令
      typeset 可以转换变量的值, 这种改变是永久的.修改的时候, 只需要输入变量名不用加$, 因为typeset是直接改内存的值.
      但是某些时候不起作用, 例如值为AgileCenter时候
    str="aaaZZZ"
    typeset -l str
    echo $str
    typeset -u str
    echo $str
    
    1. tr
    #大转小
    echo "aaaZZZ" | tr '[A-Z]' '[a-z]'
    #小转大
    echo "aaaZZZ" | tr '[a-z]' '[A-Z]'
    
  • 相关阅读:
    RESTful API 设计原则
    c#的逆变和协变
    Java内部类之间的闭包和回调详解
    java的内部类
    抓包工具
    HashMap与HashTable的区别
    Java 语法清单
    Java面试问题列表
    bootstrap table api
    c# CacheManager 缓存管理
  • 原文地址:https://www.cnblogs.com/jrri/p/14350724.html
Copyright © 2020-2023  润新知