📄 self-source.sh
字号:
#!/bin/bash# self-source.sh: 一个脚本"递归"的source自身. # 来自于"Stupid Script Tricks," 卷 II.MAXPASSCNT=100 # 最大的可执行次数. echo -n "$pass_count "# 在第一次运行的时候,这句只不过echo出2个空格,#+ 因为$pass_count还没被初始化.let "pass_count += 1"# 假定这个未初始化的变量$pass_count#+ 可以在第一次运行的时候+1.# 这句可以正常工作在Bash和pdksh下, 但是#+ 它依赖于不可移植(并且可能危险)的行为.# 更好的方法是在使用$pass_count之前,先把这个变量初始化为0.while [ "$pass_count" -le $MAXPASSCNT ]do . $0 # 脚本"source"自身, 而不是调用自己. # ./$0 (应该能够正常递归)不能在这正常运行. 为什么?done # 这里发生的动作并不是真正的递归,#+ 因为脚本成功的展开了自己,换句话说,#+ 在每次循环的过程中#+ 在每个'source'行(第20行)上# 都产生了新的代码.## 当然, 脚本会把每个新'source'进来文件的"#!"行#+ 都解释成注释, 而不会把它看成是一个新的脚本.echoexit 0 # 最终的效果就是从1数到100. # 真是让人印象深刻.# 练习:# -----# 使用这个小技巧编写一些真正能够干些事情的脚本.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -