这个问题是我之前笔试的时候碰到的一道题,今天来详细展开写写解答思路:
仔细分析一下这道题目,他的核心考察是循环语句的用法,还有date命令的用法。
date命令是linux系统中比较常用的命令,就是跟时间挂钩,包括查看时间,修改时间,转换时间戳格式,加减时间等等。这道题目相对较为宽松,他并没有要求具体的时间格式要求,比如年月日时分秒等,那么我们就打印最常见的时间格式就好。
linux中bash的循环用法有很多,包括for循环,while循环和until循环,
相对于for循环,前提我们需要知道循环次数,如果想无限循环,只能把次数写大点;
当我们只知道停止条件,不知道次数,就需要使用while循环;
当重复测试某个条件,只要条件不成立则反复执行,那么就用until循环。
在这个案例当中,我推荐while循环来写,我的答案如下:
#!/bin/bash while true do echo $(date +%F%n%T) >> time.txt sleep 1 done &
当我把答案提交之后,面试官又追加了一个小问题,你知道为什么linux脚本第一行都是#!/bin/bash吗?这可把我难住了!每次都知道按照规则写,但是实在没考虑,所以当时我就没回答上来,后面自己做了功课,我把我认为比较好的解释放上来吧:
#!/bin/bash是指此脚本使用/bin/bash来解释执行。
其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
该脚本的执行方式是:./文件名.sh