检查下面的脚本. 运行它, 然后解释一下这个脚本是做什么用的. 注释这个脚本, 并以更紧凑和更优雅的形式重写它.
1 #!/bin/bash 2 3 MAX=10000 4 5 6 for((nr=1; nr<$MAX; nr++)) 7 do 8 9 let "t1 = nr % 5" 10 if [ "$t1" -ne 3 ] 11 then 12 continue 13 fi 14 15 let "t2 = nr % 7" 16 if [ "$t2" -ne 4 ] 17 then 18 continue 19 fi 20 21 let "t3 = nr % 9" 22 if [ "$t3" -ne 5 ] 23 then 24 continue 25 fi 26 27 break # 当你注释掉这行, 会发生什么? 为什么? 28 29 done 30 31 echo "Number = $nr" 32 33 34 exit 0 |
---
解释一下下面脚本的作用. 事实上它只是一个参数化的命令行管道.
1 #!/bin/bash 2 3 DIRNAME=/usr/bin 4 FILETYPE="shell script" 5 LOGFILE=logfile 6 7 file "$DIRNAME"/* | fgrep "$FILETYPE" | tee $LOGFILE | wc -l 8 9 exit 0 |
---
一个读者发来了如下的代码片断.
1 while read LINE 2 do 3 echo $LINE 4 done < `tail -f /var/log/messages` |
---
分析例子 A-10, 然后简化它, 使其逻辑性更好. 看看可以省掉多少个变量, 尝试优化这个脚本, 并提高这个脚本的运行速度.
修改这个脚本, 让它可以接受任意的ASCII文本文件作为输入, 用于它初始的"产生".
这个脚本将读取最初的$ROW*$COL
字符,
并且设置元音的出现次数作为"活的"细胞.
提示: 必须保证将输入文件中的空格转换为下划线.