shell 脚本使用总结

版权声明: https://blog.csdn.net/qq_34246164/article/details/84825071

目录

 

1 重定向

2 实现既定向输出又打印在终端 ——tee ,命令

3  在shell脚本中实现try ... catch... 功能比较 &&  和 || 的不同

4 shell 标准输入输出

5 shell 函数

6 shell 输出

7 示例


1 重定向

1.1 输出重定向
    (1) >>, 〉 输出重定向 
        输出重定向即输出不在终端上,而是输出到文件中去或其它
               >>file  的意思是如果重定向的文件不存在,则重新创建文件,并将信息在文件的末尾插入; 如果文件已经存在, 则直接在末尾插入
        >file   的意思是如果重定向的文件不存在,则重新创建文件,并将信息在文件的末尾插入; 如果文件已经存在, 则重建文件后再插入
       
    (2)<, << 输入重定向 :
        输入重定向即输入不从键盘读入,而是从文件输入或其它

2 实现既定向输出又打印在终端 ——tee ,命令

tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中。
用法示例:

格式:tee file1
类似于>
输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。

格式:tee -a file1
类似于>>
输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

 
格式:tee file1 file2 
重定向到文件file1和file2中,tee可以重定向到多个文件。
  

3  在shell脚本中实现try ... catch... 功能
比较 &&  和 || 的不同

&& 的特点:
func1 && func2   func1 执行成功后才会func2

|| 的特点:

func1 || func2   func1 执行失败后才会func2

 
因此, 通过以上的比较功能可以使用 || 实现try ... catch .... 功能。


4 shell 标准输入输出


在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2

使用如下:2>>log  将标准错误信息重定向到文件log中

5 shell 函数


格式如下:

func(){
    echo "hello, world"
}

调用如下:

func

传参:
func params1, params2

6 shell 输出

echo 可以输出到控制台
例如:
echo  "hello, world"

7 示例

使用以上功能实现一个可以记录程序执行成功和报错信息的程序


#函数1
func1(){
    create table tem(ip, int)       #这条建表语句会报错
}

#函数2
#func1 执行成功,则把执行成功的信息输出到log文件中,并记录执行日期
func2(){
    date=`date "+%Y-%m-%d %H:%M:%S"`          #获取时间信息  
    echo $date | tee -a log                   #将日期输出到日志 ,其中  |  的含义是前面的echo 的输出 date,作为后面的tee的输入
    echo "sucess action" | tee -a log         #将执行成功信息输出到日志
}


func3(){
    {
        func1 2>tem     #将函数的标准错误输出重定向到一个临时文件中
    } && {
        func2
    } ||{
        var = $(cat tem)                          #从临时文件中读取错误信息
        date=`date "+%Y-%m-%d %H:%M:%S"`          #获取执行信息  
        echo $date | tee -a log                   #将日期输出到日志 
        echo $var  | tee -a log                   #将执行错误信息输出到日志
    }
}

#执行func3
func3

猜你喜欢

转载自blog.csdn.net/qq_34246164/article/details/84825071