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 ]]

おすすめ記事