1

ユーザーが事前に実行するように求められる複数のコマンドを含むスクリプトを作成し、ユーザー入力に基づいてそれらのコマンドの動的セットを実行しようとしています。

たとえば、実行する必要のあるコマンドの関数を設定するとします。

    command1 () { some_command; }
    command2 () { some_command; }
    command3 () { some_command; }
    command4 () { some_command; }

一連のプロンプトが続きます

Do you want to run command1?
Do you want to run command2?
Do you want to run command3?
Do you want to run command4?

この例では、Y、N、Y、Yを想定しているので、command1、command3、command4を実行する必要があります。

どんな援助でも大歓迎です。

4

4 に答える 4

1
read -p "Do you want to run command1? " c1  
read -p "Do you want to run command2? " c2  
read -p "Do you want to run command3? " c3  
read -p "Do you want to run command4? " c4

if [ "$c1" = "Y" ]; then  
    command1  
fi  

if [ "$c2" = "Y" ]; then  
    command2  
fi

if [ "$c3" = "Y" ]; then  
    command3  
fi

if [ "$c4" = "Y" ]; then  
    command4  
fi
于 2012-08-28T01:27:39.087 に答える
1

select組み込みを検討する(またはしない)場合があります。

select

select構文を使用すると、メニューを簡単に生成できます。forコマンドとほぼ同じ構文です。

select name [in words ...]; do commands; done

続く単語のリストが展開され、アイテムのリストが生成されます。展開された単語のセットは、標準エラー出力ストリームに出力され、それぞれの前に数字が付きます。'in words'を省略すると、' in "$ @"'が指定されたかのように、位置パラメータが出力されます。次に、PS3プロンプトが表示され、標準入力から行が読み取られます。行が表示された単語の1つに対応する番号で構成されている場合、nameの値はその単語に設定されます。行が空の場合、単語とプロンプトが再度表示されます。EOFが読み取られると、selectコマンドが完了します。その他の値を読み取ると、nameがnullに設定されます。読み取られた行は変数REPLYに保存されます。

コマンドは、各選択後にbreakコマンドが実行されるまで実行され、実行されると、selectコマンドが完了します。

于 2012-08-28T01:36:27.783 に答える
0

読み取りコマンドは、必要なものですhttp://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html

短い例

変数「foo」にユーザー入力を適用する

# Just showing a nice message along with it.
echo -n "Would you like to run command1? (Y/N) "
read foo

次に、foo変数の値をテストするだけです。

if [ "$foo" == "Y" ]; then
  command1
fi
于 2012-08-28T01:15:29.513 に答える
0

ユーザー入力を一連の変数に取り込んだ場合(他の回答で詳しく説明されているようにreadコマンドを使用)、コマンドごとに1つずつ(たとえば、C1、C2、C3と呼びます)、ユーザー入力を取り込んだ後、次のことができます。それらの変数の値を調べる一連のifステートメントを記述します

if [ $C1 == "Y" ]; then
    command1
fi

if [ $C2 == "Y" ]; then
    command2
fi

if [ $Cn == "Y" ]; then
    commandN
fi

それはまったく役に立ちますか?

于 2012-08-28T01:15:41.930 に答える