zoukankan      html  css  js  c++  java
  • shell今天学习到的

    1. 来自于shell 13问

    提问:cd /etc/aa/bb/cc可以执行 但是把这条命令放入shell脚本后,shell脚本不执行! 这是什么原因?

    其实我不太知道是什么意思, 但是这个问题要问的是source, exec, fork的区别

    概念解释fork: fork是在已有的shell的基础上,又启动一个新的sub-shell,彼此互不干扰, 即使是export $x.

    概念解释exec: exec是在以后shell的基础上, 继续启动分片shell, 但是这个分片结束了, 整个shell都都结束了

    概念解释: source/. 是在shell的基础上, 又有一个shell, 在此原来shell的上面继续执行, 互相干扰。

    例子

    1.sh

    #!/bin/bash 
    
    A=B 
    echo "PID for 1.sh before exec/source/fork:$$"
    
    export A
    echo "1.sh: $A is $A"
    
    case $1 in
            exec)
                    echo "using exec..."
                    exec ./2.sh ;;
            source)
                    echo "using source..."
                    . ./2.sh ;;
            *)
                    echo "using fork by default..."
                    ./2.sh ;;
    esac
    
    echo "PID for 1.sh after exec/source/fork:$$"
    echo "1.sh: $A is $A"
    

      2.sh

    #!/bin/bash
    
    echo "PID for 2.sh: $$"
    echo "2.sh get $A=$A from 1.sh"
    
    A=C
    export A
    echo "2.sh: $A is $A"
    

      

    $ ./1.sh source
    PID for 1.sh before exec/source/fork:231
    1.sh: $A is B
    using source...
    PID for 2.sh: 231
    2.sh get $A=B from 1.sh
    2.sh: $A is C
    PID for 1.sh after exec/source/fork:231
    1.sh: $A is C


    $ ./1.sh exec
    PID for 1.sh before exec/source/fork:235
    1.sh: $A is B
    using exec...
    PID for 2.sh: 235
    2.sh get $A=B from 1.sh
    2.sh: $A is C


    $ ./1.sh fork
    PID for 1.sh before exec/source/fork:239
    1.sh: $A is B
    using fork by default...
    PID for 2.sh: 240
    2.sh get $A=B from 1.sh

    2. 如何清空log

    find -mtime +365 -name "*.log" exec rm -rf

    or

    find -mtime +7 -name "*.log" | xargs rm -rf 

    3. 如何发邮件

    echo $attachment echo "email content" | mail -to hello@12,com

    4. 获取文件的个数

    list=`ls /tmp`

    count=$list|wc -l //l是行数

    5. 获取最新的文件

    find -type f -name "*" | sort| head -n 1 // sort默认是按照字母或者数字从下往上, f是按照时间从新往旧

    6. 引号的问题

    单引号 => 硬引号。 所以A=B; echo ‘aa $A’  将输出 aa $A

    双引号 => 软引号。 所以A=B; echo "aa $A" ,将输出 aa B

    backquote => 这里``将执行里面的内容, echo `aa $A` aa has error, not defined

    echo -e ' ' 解释转义

    echo -n "sss" 最后不换行

    7. 获取格式化日期

    DATE=`date -d '7 day ago' +%Y-%m-%d`

     echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)

    8. 获取执行的log,错误日志等

    ./1.sh /dev/null 2>log 错误输出到log文件

    ./1.sh /dev/null 2>&1 错误输出到标准输出

    9. 格式化输出

    printf "%-10s %-8s %-4s " 姓名 性别 体重kg  
    printf "%-10s %-8s %-4.2f " 郭靖 男 66.1234
    printf "%-10s %-8s %-4.2f " 杨过 男 48.6543
    printf "%-10s %-8s %-4.2f " 郭芙 女 47.9876

    姓名     性别   体重kg
    郭靖           66.12
    杨过           48.65
    郭芙           47.99

    10. awk

     $ awk '{print $1,$4}' log.txt
  • 相关阅读:
    消除ie上的:为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件
    JS代码放在head和body中的区别
    iis与apache共用80端口方法集
    如何制作wordpress模板,WordPress模板技术手册
    zt 给博墅加个clocklink时钟
    MSSQL数据库:存储过程实例学习(1)从两个表中取出头两行,然后合并到一个表中
    ecmall 用户后台店铺条幅 在firefox7 以上无法预览的问题
    .NET MVC 实现动态换版
    一道嚼烂的面试题
    [1].gSOAP简介
  • 原文地址:https://www.cnblogs.com/connie313/p/14483589.html
Copyright © 2011-2022 走看看