0

Linuxカーネル構築プロセスを自動化するスクリプトを書いています。私のスクリプトには、プロンプトがあります。はい/いいえ、その他は特定のアクションです。これが私の質問です:関数を適切に閉じて、その関数が実行された後に次のオプションに移動する方法は?指定されたアクションにジャンプし、その間のプロンプト/アクションをバイパスするにはどうすればよいですか?次に例を示します。

#!/bin/bash
echo "Do you need to install the necessary compiling tools?"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) sudo apt-get install tools; break;;
        No ) <Here I want to skip to the next step. I originally left it 
              blank and removed the "done" command (after esac command) 
              to do this, but if I choose yes, it skips to the end 
              (where the next "done" command is and ends the script>
    esac

<I had to flip the yes/no for the script to skip to the next prompt>
echo "Do you need to eidt your configuration?"
select ny in "No" "Yes"; do
    case $ny in
        No ) <what do I put here to skip to the next tag 
             (labeled compile for example purposes); break;;
        Yes ) 
    esac

echo "You have 3 options with how you can edit you config file."
select yn in "Gtk" "KDE" "Terminal"; do
    case $yn in
    Gtk ) make gconfig; break;;
    KDE ) make xconfig; break;; 
        Terminal ) make menuconfig; break;;
    esac
done
done
done        <I had to insert all these "done" to end the file, but 
                 the scripts doesn't work the way I want it to...>
echo "Are you ready to compile"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) make; break;;
        No ) exit;;
    esac
done

したがって、基本的にスクリプトは段階的に実行されます。1.ツールをインストールする必要がありますか-はいの場合、ツールをインストールして次の手順に進みます-いいえの場合、次の手順に進みます2.構成ファイルを編集しますか-はいの場合、どのように; --opt1 --opt2 --opt3 -次に、終了したら、次の手順にスキップします-いいえの場合は、次の手順にスキップします3.コンパイルします。

4

1 に答える 1

0

ええと...

echo "Do you need to eidt your configuration?"
select ny in "No" "Yes"; do
    case $ny in
        No ) break;;
        Yes ) 
          echo "You have 3 options with how you can edit you config file."
          select yn in "Gtk" "KDE" "Terminal"; do
              case $yn in
              Gtk ) make gconfig; break;;
              KDE ) make xconfig; break;; 
                  Terminal ) make menuconfig; break;;
              esac;
             ...
          break;;
    esac

または、さらに良いことに、各部分を関数に入れて、適切に呼び出します。

于 2013-02-07T03:41:37.883 に答える