私はスクリプトをインタラクティブにするためにbashでこのコードを使用しています。私の言葉は、interactive
スクリプトが私のデータのパスが何であるかのようないくつかの質問をするようにすることです。
#!/bin/bash -ef
read userInput
if [[ -n "$mypath" ]]
then
datadir=$mypath
fi
printf "YOUR PATH TO DATA IS: $datadir ";
次の質問があります。
- 以前のコードでは、単語を完全に表示できませんでした。特に、
TAB
キーを使って単語を完成したり、right/left arrows
文字を見てみると、さらにそうです。たとえば、パスの作成中に間違いを犯した場合、などのキーを使用してこの間違いを修正しようとすると、そのキーは正しく機能しませんHome
。End
arrows left/right
- 私のアイテム
empty
が空データパスがない場合、または空のフィールドのみがある場合)、コードでパスを再度尋ねるか、プロセスを中断して終了するようにしたいと思います。
どんな提案でも高く評価いたします。
答え1
while ((1)) ; do
echo please define path:
read input
echo is $input ok [y/n/abort]?
read answer
case $answer in
[yY]|[Yy][Ee][Ss]*)
path=$input
break
;;
[Aa][Bb][Oo][Rr][Tt])
exit
;;
[Nn]|[Nn][Oo])
;;
*)
echo invalid input, please try again
;;
esac
done
つまり、case
ステートメントの無限ループは、ユーザーがアイテムを検証したときにのみ中断されます。もちろん、フィードバックループを実行する前に、そのパスが実際に存在することを確認することもできますcase
。