1. 按格式输出date

echo $(date '+%Y-%m-%d %H:%M:%S.%N')

shell脚本中echo追加到文件中不换行 shell tee命令 追加_重定向

 

 2. tee命令

作用:双向输出 (屏幕输出|文件输出)

用途:多路径输出

使用:

| tee 选项 filename

-a:双向追加重定向      #l 注意:tee命令从标准输入读取并写入标准输出和文件,即:双向覆盖重定向

                             不加 -a是覆盖输入。 加 -a是追加输入。

                             filename不存在会新建文件。

shell脚本中echo追加到文件中不换行 shell tee命令 追加_输出重定向_02

 

 

3. 输出重定向

参考: linux输出重定向

标准输入设备为 键盘, 标准输出设备为显示器。

linux中的文件描述符:linux中用0代表标准输入,1代表标准正确输出,2代表标准错误输出

shell脚本中echo追加到文件中不换行 shell tee命令 追加_重定向_03

 

正常输出是把内容输出到显示器上,而输出重定向是把内容输出到文件中

 (1)标准输出到文件

    命令 > [文件]     以覆盖的方式, 将命令的正确输出结果指定到文件

    命令 >> [文件]   以追加的方式, 将命令的正确输出结果指定到文件

   (2)  标准错误输出重定向

[错误命令] 2>[文件]   以覆盖的方式, 将命令的错误输出结果指定到文件

[错误命令] 2>>[文件]   以追加的方式, 将命令的错误输出结果指定到文件

注意:2>/dev/null  标准错误重定向到/dev/null中

  /dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。

所以,2>/dev/null的意思就是将标准错误stderr删掉。

 

   (3)正确输出和错误输出同时保存

   [命令] &> [文件]      以覆盖的方式, 将命令正确和错误输出结果指定到文件中

   [命令] > [文件] 2>&1    同上

   [命令] > [文件1] 2>[文件2]   将正确输出覆盖入文件1, 将错误输出覆盖入文件2

   

4.  mysql -BNe  批量执行语句, 结果中不输出列名

-B ,--batch  Disable interactive behavior. 没有交互行为 

-N ,--skip-column-names    Don't write column names in results.  结果中不输出列名

-e, --execute=name  Execute command  执行命令

 

5. $?  指上个命令的退出状态 或函数的返回值

if [ $? -ne 0 ]
then
#脚本不正常退出
exit 1
fi

6.command | while read line

do

    …

done

command命令的输出作为read循环的输入,逐行读取command命令的输出。这种结构常用于处理超过一行的输出.

 7. shell特殊变量及其含义。

变量

含义

$0

当前脚本的文件名。

$n(n≥1)

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

$#

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

$*

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

$@

传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,我们将在《Shell $*和$@的区别》一节中详细讲解。

$?

上个命令的退出状态,或函数的返回值,我们将在《Shell $?》一节中详细讲解。

$$

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

 

 

8. awk '{print $NF}'

$NF 表示 匹配模式到最后值(默认间隔符是空格,也可以通过-F指定)

NF 表示 匹配的行有多少列(默认间隔符是空格,也可以通过-F指定)

awk '{print $1}' 表示打印第一列