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

답변2

훌륭한. 위치변수가 설정되어 있는지 확인을 추가해야 합니다. 그렇지 않다면 의견을 요청하세요.

이 같은:

#!/bin/sh

[ -n "$1" ] && ENVIRONMENT_NAME=$1 || { echo -n "Enter environment name: "; read ENVIRONMENT_NAME; }
if [ -n "$2" ]; then
        EMAIL=$2
else
        echo -n "Enter email: "
        read EMAIL
fi


echo "env=$ENVIRONMENT_NAME"
echo "email=$EMAIL"

조건 확인을 위해 다양한 구조를 사용하고 있다는 점에 유의하세요. 단지 다양한 접근 방식이 있으며 사용자에게 더 편리한 것을 선택할 수 있다는 점을 보여주기 위함입니다.

|| &&또한 , 사이에 있는 부분에 문제가 있어도 빠질 수 있으니 사용시 더욱 주의하셔야 한다는 점 참고해주세요 .|| ...&& .. ||

관련 정보