shell(五)echo详解

104 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

前面写了那么多echo,可能会说了,echo就是个输出用的,有啥可理解的点,那么我们看看;

通过前面的用例我们已经知道了echo的原样输出、echo的转义输出、echo的变量输出,好像没了,但是我们都知道,如果我想要换行输出(或者合并输出)的话怎么办呢,平时开发可以写println();表示,那shell怎么表示?其实所有的所有都是通过转义来进行操作,比如说

echo "hello"
echo "world"

我现在需要这两个一行输出,怎么做,java和C里怎么做的,制表符\t、\c操作这个也类似,只不过呢,你要告诉它你需要转义,最简单的就是不换行的方式,第一个改成

echo -n "hello"

这样就不会换行了,输出helloworld,通过标准转义是第一个改成

echo -e "hello,\c"

这样输出hello,world,刚刚看了-n和-e的用法,其实还有个默认的**-E** 取消反斜杠ESC转义 (默认);

对于-e还有一些其他的比较好玩意的符号比如\a 发出提示声,以及对输出的提示进行变色,这个可以自行研究;

如果你想将文件打印到对于的文件里面或者需要打印某些指令?比如我们的日志,过多的信息放入文件里才是最方便查找问题的,所以我们可以建一个文件(好像说到上讲的文件了)细看下;现在我们综合运用下吧;

日志写入文件

首先信息写入文件要判断文件是否存在,存在则写入,不存在则创建写入,看代码

file="log.txt"
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
   touch log.txt
fi

执行两次可以看到输出的情况第一次执行完log.txt已经创建成功了,当然对于file变量我们可以加上路径的,我这里就没加了;

下面我们加上日志输出到文件看看效果如何,

echo "我进文件啦" > log.txt

我们会发现这个文件的内容会覆盖上一次内容,而且我们也不知道这个文件是啥时候生成的,那么这个时候我们得加个时间在输出指令里了,看下代码:

time=$(date  "+%Y-%m-%d:%H:%M:%S")
echo $time "--------------我进文件啦" > log.txt

那如何解决追加的问题呢其实只要把>改为>>就行了,看

echo $time "--------------我进文件啦" >> log.txt

这样就没事了,最后看下输出:

这样我们就算完成了一个日志写入文件的功能了,每次运行都写入一次文件,也可以知道这个脚本的执行情况,对于项目的平稳运行也是起到很好的辅助作用的,通过这个小用例我们也可以把前面的施展一下吧,对了,对于输出的信息我们可以给它弄提示色的,是不是有那么点味道了;好啦🥗🥗🥗;

结束结束,那就🛴🛴🛴