1. 쉘 스크립트에 전달 된 매개 변수의 수를 확인하려고하는데 간단한 방법을 찾을 수 없습니다.

사용자 3365592

아래 요구 사항에 따라 두 개의 다른 스크립트에 대한 유효성 검사를 작성하려고합니다.

  1. 필요한 모든 매개 변수가 셸 스크립트에 전달되는지 확인하려고하지만 getopts가 긴 변수를 지원하지 않기 때문에 올바른 방법을 찾을 수 없습니다.

members.sh -name [name] -age [age] -sex [m/f] -add [address] -city [city] -country [country] -pincode [pincode] - mobile [mobile no] -email [email id]

나는 위의 매개 변수를 전달하려면, mobileemail필수 옵션이되어 남은 선택 사항 age, pincode숫자 만해야하며, 우리가 더 다음 정수에 있어야합니다 또한 그 이동을 제공하지 않는 경우.

위의 내용을 어떻게 확인할 수 있습니까? 미리 도와 주셔서 감사합니다

  1. 다른 스크립트의 경우 여러 옵션 중 하나만 허용해야합니다. 어떻게이 작업을 수행 할 수 있습니까?

예:

listhistory.sh -all -name [name] -mobile [mobile no] .... -opt9 [data9]

위의 스크립트는 9 개의 인수 내에서 -all또는 -name [name]또는 -mobile [mobile no]또는 다른 인수를 사용하여 호출해야합니다 .

Nishant Shrivastava

요구 사항을 약간 수정하고 다음과 같은 스크립트를 사용해야 할 수도 있습니다.

members.sh --name [name] --age [age] --sex [m / f] --add [address] --city [city] --mobile [mobile no] --email [email id]

괜찮다면 .. 다음과 같이 작성하는 것이 좋습니다.

#!/bin/sh

while getopts ":-:" arg
do
        case "${arg}" in
            -)
                 case "${OPTARG}" in
                        sex)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            sex=${val};
                           ;;
                        age)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            age=${val};
                            ;;
                        name)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            name=${val};
                            ;;
                        add)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            add=${val};
                            ;;
                        city)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            city=${val};
                            ;;
                        mobile)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            mobile=${val};
                            ;;
                        email)
                            val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
                            echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
                            email=${val};
                            ;;
                    esac;;
        esac
done


err=0;
if [ -z "${sex+xxx}" ]; then echo sex is not set at all; err=1;fi
if [ -z "${name+xxx}" ]; then echo name is not set at all;err=1; fi
if [ -z "${age+xxx}" ]; then echo age is not set at all; err=1; fi
if [ -z "${city+xxx}" ]; then echo city is not set at all; err=1; fi
if [ -z "${add+xxx}" ]; then echo add is not set at all; err=1; fi

if [[ $err -eq 1 ]]
then
        echo "incorrect usage"
        exit 1
else
        echo "All mandatory fields are set"
fi

추신 : 필자는 모든 필수 필드를 다루지 않았습니다. .. 5 개의 인수 [이름, 나이, 성별, 도시 및 추가]를 필수로 만드는 솔루션을 기반으로합니다. 전화와 이메일은 선택적 인수입니다.

코드는 입력을 받아 변수에 저장합니다. 추가 유효성 검사를 위해 코드를 직접 작성하세요.

샘플 출력 :

$ sh n.sh --name nishant --age 24 --sex M --add "New Delhi India" --city Noida
Parsing option: '--name', value: 'nishant'
Parsing option: '--age', value: '24'
Parsing option: '--sex', value: 'M'
Parsing option: '--add', value: 'New Delhi India'
Parsing option: '--city', value: 'Noida'
All mandatory fields are set

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관