36.4 递归:调用自己的脚本
脚本可以递归的调用自己吗?答案是肯定的。
Example 36-10. 可以调用自己的脚本(但没什么实际用途)
#!/bin/bash
# recurse.sh
# 脚本可以调用自己吗?
# 其实是可以的。但这样有什么实际用途吗?
# (请往下看)
RANGE=10
MAXVAL=9
i=$RANDOM
let "i %= $RANGE" # 在0到$RANGE - 1的范围内产生一个随机数
if [ "$i" -lt "$MAXVAL" ]
then
echo "i = $i"
./$0 # 脚本进行递归调用(调用自己)
fi # 每次被调用的脚本做同样的事情,直到$i和$MAXVAL相等。
# 如果使用“while”循环代替“if/then”语句会出问题。请试着解释为什么。
exit 0
# 笔记:
# ----
# 这个脚本文件必须有可执行权限。
# 即使使用“sh”命令调用,这脚本也可以执行。
# 请解释原因。Example 36-11. 一个有点用的调用自己的脚本
Example 36-12. 另一个调用自己的脚本
过多层次的递归调用会导致脚本的栈空间溢出,引起段错误(segfault)。
最后更新于
这有帮助吗?