명령줄 인수나 사용자 입력(읽기 명령)을 통해 변수를 설정하도록 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"
조건 확인을 위해 다양한 구조를 사용하고 있다는 점에 유의하세요. 단지 다양한 접근 방식이 있으며 사용자에게 더 편리한 것을 선택할 수 있다는 점을 보여주기 위함입니다.
|| &&
또한 , 사이에 있는 부분에 문제가 있어도 빠질 수 있으니 사용시 더욱 주의하셔야 한다는 점 참고해주세요 .|| ...
&& .. ||