读取文件行
- for
- 命令替换
- 代码块重定向
- while
- 管道符
- 代码块重定向
for
IFS=$‘\n‘
for line in `ls -l`
do
(( count++ ))
done
echo $count
注意:
for读取时,自动按空格作为间隔符。因此需要将IFS定义为按换行符分隔
ls -l > forout.log
maxlength=$(wc -l < forout.log)
for i in `seq $maxlength`
do
(( count++ ))
done < forout.log
echo $count
注意:
wc 需要使用重定向方式,否则输出的格式是”行数 文件名”。
while
while read line
do
(( count++ ))
done < readFile.log
echo $count
注意
如果while条件表达式没有写read,则会输出line,但最后结果是一样的
cat readFile.log | while read line
do
#(( count++ ))
echo "$line"
done
#echo $count
注意
最后输出的count是空值,感觉是因为一个管道符生成了一个子进程,而子进程的变量无法返回父进程
time
ime命令 用于 打印出一条命令或一个程序的执行时间
time 命令以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。
用法:time [ -p ] Command [ Argument … ]
time命令结果有三行组成:real、user和sys。我们这里用的都是real值,CPU用时被划分为user和sys两块。
- real值表示从程序开始到程序执行结束时所消耗的时间,包括CPU的用时。
- user值表示程序本身,以及它所调用的库中的子例程使用的时间。
- sys是由程序直接或间接调用的系统调用执行的时间。
测试上述四种方法
1.
real 0m0.022s
user 0m0.000s
sys 0m0.004s
2.
real 0m0.066s
user 0m0.004s
sys 0m0.016s
3.
real 0m0.001s
user 0m0.000s
sys 0m0.000s
4.
real 0m0.015s
user 0m0.000s
sys 0m0.008s
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-03 22:40:18