1개의 인수 이후 각 인수의 시작은 -*와 같지 않습니다.

1개의 인수 이후 각 인수의 시작은 -*와 같지 않습니다.

2개의 인수 이후 각 인수의 시작 부분은 -*와 같지 않습니다.

for args in "$@"
do
if [[ ${@: 2} != -* ]]; then 
case "$args" in
   -q)
      if [ ! -z "$2" ]; then
          echo "$2"
          shift
       fi
    shift
    ;;
   -w)
      if [ ! -z "$2" ]; then
          echo "$2"
          shift
       fi
    shift
    ;;
   -e)
      if [ ! -z "$2" ]; then
          echo "$2"
          shift
       fi
    shift
    ;;
esac
else 
    echo "arguments start with '-'"
fi
done

-q s d f g h첫 번째 매개변수에만 적용됩니다.

-q -v -b -n -m -n그리고 -q -l j u -y d틀렸어

첫 번째 매개변수 이후 나머지 매개변수는 "-" 문자로 시작하면 안 됩니다.

if [ ! -z "$2" ];- 매개변수가 비어 있는지 확인

답변1

대시로 시작하는 첫 번째 매개변수를 제외한 매개변수가 없는지 확인하려는 것 같습니다.

다음을 수행할 수 있습니다.

#!/bin/bash

if [[ $1 != -* ]]; then
    printf '1st argument, "%s", does not start with a dash\n' "$1"
    exit 1
fi >&2

arg1=$1

shift

for arg do
    if [[ $arg == -* ]]; then
        printf 'Argument "%s" starts with a dash\n' "$arg"
        exit 1
    fi
done >&2

echo 'All arguments ok'

printf 'arg 1 = "%s"\n' "$arg1"
printf 'other arg = "%s"\n' "$@"

첫 번째 매개변수를 명시적으로 만들어야 하는 경우 -q첫 번째 테스트를 다음에서 변경하세요.

[[ $1 != -* ]]

도착하다

[[ $1 != -q ]]

관련 정보