Bashスクリプトでコマンドライン引数を使用して変数値を設定できますか?

Bashスクリプトでコマンドライン引数を使用して変数値を設定できますか?

コマンドライン引数またはユーザー入力(読み取りコマンド)を介して変数を設定するようにbashスクリプトを変更したいと思います。引数がコマンドラインに渡されると、ユーザー入力を要求せずにスクリプトを実行する必要があります。

コマンドライン引数またはユーザー入力に変数を設定できますが、同じスクリプトに両方を設定することはできません。

#!/bin/sh

ENVIRONMENT_NAME=$1
EMAIL=$2

read ENVIRONMENT_NAME
read EMAIL

echo "$ENVIRONMENT_NAME"
echo "$EMAIL" 

次のように読み取りコマンドを実行すると、$ 1と$ 2から値を取得する必要があります。

./<scriptname> <environment_name> <email>

ベストアンサー1

$#パラメータが指定されていることを確認するには(パラメータ数)値を表示します。

#! /bin/sh -

if [ "$#" -ge 1 ]; then
  ENVIRONMENT_NAME=$1
else
  IFS= read -r ENVIRONMENT_NAME || exit # on EOF
fi

if [ "$#" -ge 2 ]; then
  EMAIL=$2
else
  IFS= read -r EMAIL || exit # on EOF
fi

おすすめ記事