特定の機能を実行するためにパラメータを文字列として外部に渡す方法

特定の機能を実行するためにパラメータを文字列として外部に渡す方法

コマンドラインのようにスクリプトを実行する必要がある非常に長いbashスクリプトがあります。実行すると

 ./script.sh arg1 arg2 create

上記のように、 "arg1"と "arg2"で "create"文字列を渡すと、script.shの特定の機能を実行する必要があります(例:create_fn())。

上記のように

./script.sh arg1 add 

文字列 "add" を渡して arg1 だけを渡すと、 --> create_add() 関数を実行する必要があります。

また、「cr」の後にTabを押すと、自動的に「create」/ad->addと書かなければなりません。

誰でも私を助けることができますか?

ベストアンサー1

まず、本ホームページへようこそ。

あなたの質問に対する答えは、スクリプトに渡されたパラメータの一貫性によって異なります。

もし保証

  • 「create」パラメーターは、合計3つのパラメーターがある場合にのみ使用されます。ここで、「arg1」と「arg2」は「create」の前にあります。
  • 「add」パラメータは、合計2つのパラメータがある場合にのみ使用されます。ここで「arg1」は「add」の前にあります。

その後、スクリプトを呼び出した引数の総数を含む組み込みif変数に対してスクリプト内で作業できます。$#

#!/bin/bash

if [[ "$#" == "3"  && "$3" == "create" ]]
then
   create_fn <possible arguments here>
elif [[ "$#" == "2" && "$2" == "add" ]]
then
   create_add <possible arguments here>
fi

説明するには、ifテストでパラメータの数()$#が3であることを確認します。そして3番目の引数($3)は「作成」を実行して呼び出しますcreate_fn(引数を使用して質問に必要かどうかを指定しなかった可能性があります)。または数値または引数が2で、2番目の引数が「add」の場合は、この場合を呼び出しますcreate_add

一方、コマンドライン引数の順序がランダムな場合は、よりスマートな引数処理ルーチンを実装する必要があります。あなたの友達になります。

シェルプログラミングの詳細については、以下を確認してください。高度なバッシュスクリプトガイド

~について第二部あなたの質問:あなたが探している機能は「bash Complete」と呼ばれます。これは特にオートコンプリートを望んでいるので、マイナーなことではありません。コマンドラインパラメータ可能な値は、現在入力されているパラメータリストの場所とコマンドラインの前の項目によって異なります。これは可能ですが、マイナーではありません(例:Bashコマンドの完成をカスタマイズする方法は?)。

おすすめ記事