我正在编写一个 bash 脚本,以使 cd'ing 到 Dropbox 文件夹(我为 uni 存储课程作业的地方)更容易。我决定使用参数将我直接放入文件夹中某些周,或父目录或包含我所有参考资料的目录。我还决定使用递归来验证输入(最初我通过将递归语句放在 do while 循环中创建了一个无限循环)。代码如下:
#!/bin.bash
#changes to ~/Dropbox/UCP120/
function recurCall () {
echo "Invalid input: $arg1 does not exist."
echo "Enter a valid input"
read inputLoop
validateInput $inputLoop
}
function validateInput() {
arg1="$1"
reference="r"
##snip##
##if DIR is !null but non-existent loop and ask for input
elif [[ ! -d .../UCP120/"$arg1"/ || ! -d .../UCP120/Week\"$arg1"/ ]]; then
recurCall $arg1
##Recursive solutions don't require iterative control structures.
#while [[ snip (see if above) ]]; do
# recurCall $arg1
#done
fi
}
##Call the function. Get this ball rolling
validateInput $1
我的问题是:
- 我只是幸运这有效吗?还是我设法设计得相当好?
- 递归是一个现实世界可行的解决方案吗?还是在学习练习之外毫无用处?
- 有没有像我考虑不周的原始尝试那样在迭代内部进行递归的真实世界应用程序?
- 我该如何改进呢?
谢谢,如果我问了不恰当的问题,我深表歉意。但是,我希望拥有丰富经验的互联网可以帮助我和我对这些概念的理解。
编辑:删除了 validateInput 中的 if then 语句。交换函数名称,因为这样更有意义。删除了 while 条件以希望减轻屏幕宽度。
编辑:缩短目录路径以进一步减轻屏幕宽度。