単純なスクリプトがあり、次のようにスクリプトを実行します。
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
最後はどこにありますか?