Bashコマンドラインを実行すると、変数名をパラメータ値として読み取ることができますか?

Bashコマンドラインを実行すると、変数名をパラメータ値として読み取ることができますか?

単純なスクリプトがあり、次のようにスクリプトを実行します。

script.sh 123 456

スクリプト内容

FirstNum=$1
SecondNum=$2

スクリプトで$ 1と$ 2を使用する代わりに、実行時にコマンドラインを渡すことはできますか?

    script.sh FirstNum=123 SecondNum=456 (so that i dont want to call $1 , $2 inside the script)

$ 1と$ 2を使用せずにコマンドラインを介して直接値を渡す方法はありますか?

答え1

bashシェルの場合は、getoptsそれを使用してコマンドライン引数を解析する必要があります。

~からhttps://sookocheff.com/post/bash/parsing-bash-script-arguments-with-shopts/

シェルスクリプトの一般的な作業は、スクリプトのコマンドライン引数を解析することです。 Bashはこれを行うためにgetopts組み込み機能を提供します。このチュートリアルでは、getopts組み込み関数を使用してbashスクリプトのパラメータとオプションを解析する方法を説明します。

例:

while getopts ":f:l:" opt; do
  case ${opt} in
    f )
      firstnum=$OPTARG
    l )
      lastnum=$OPTARG
      ;;
    \? )
      echo "Invalid option: $OPTARG" 1>&2
      ;;
    : )
      echo "Invalid option: $OPTARG requires an argument" 1>&2
      ;;
  esac
done
shift $((OPTIND -1))

単純なcharパラメータを使用することをお勧めします。

script.sh -f 123 -l 456

-f最初はどこにあり、-l最後はどこにありますか?

関連情報