私は Dropbox フォルダ (uni のコース課題を保存する場所) への cd を簡単にするための bash スクリプトを作成していました。パラメータを使用して、特定の週のフォルダ、親ディレクトリ、またはすべての参照資料を含むディレクトリに直接配置することにしました。また、再帰を使用して入力を検証することにしました (最初は、再帰ステートメントを 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 ステートメントを削除しました。このように意味をなすように、関数名を入れ替えました。うまくいけば画面幅を緩和するために条件が削除されました。
編集: 画面幅をさらに緩和するためにディレクトリ パスを短縮しました。