$ @から場所パラメータを削除する方法

$ @から場所パラメータを削除する方法

-infデフォルトでは、パラメータリストから最初の項目を「インポートしたい」と思います。 (残りのパラメータは他のコマンドに渡されます。)

私のスクリプトの構造は次のとおりです。

#!/bin/sh

<CODE>

for POSITIONAL_PARAM in "$@"
do

    <CODE>

    if [ "$POSITIONAL_PARAM" = '-inf' ]
    then
        <PLUCK $POSITIONAL_PARAM FROM $@>
        break
    fi

    <CODE>

done

<CODE>

some-other-command "$@"

# end of script

これを行うための良い方法はありますか?

ちなみに、私は主に適用される答えに興味がありますが、唯一の適用された/bin/sh答えにも興味があります/bin/bash

ベストアンサー1

POSIX的に:

for arg do
  shift
  [ "$arg" = "-inf" ] && continue
  set -- "$@" "$arg"
done

printf '%s\n' "$@"

上記のコードは、元のAlmquistシェルを除いて、POSIX以前のシェルでも実行されます(読み取り)。アメリカ)。ループをfor次のように変更します。

for arg
do
  ...
done

すべてのシェルで動作が保証されます。


別のPOSIX:

for arg do
  shift
  case $arg in
    (-inf) : ;;
       (*) set -- "$@" "$arg" ;;
  esac
done

この場合、POSIX以前のシェルで機能するには、最初のエントリを削除する(必要があります。(pattern)

おすすめ記事