シフトグループ1を呼び出した後、シフトグループの買収をキャンセル

シフトグループ1を呼び出した後、シフトグループの買収をキャンセル

このシナリオがあります

first_arg="$1";

if foo; then
    shift 1;
    node foo.js "$@"

elif bar; then

   shift 1;
    node bar.js "$@"

elif baz; then

   shift 1;
   node baz.js "$@"

else

   node default.js "$@"

fi

上記を次のように変更したいと思います。

first_arg="$1";
shift 1;

if foo; then

    node foo.js "$@"

elif bar; then

    node bar.js "$@"

elif baz; then

   node baz.js "$@"

else

   unshift 1;
   node default.js "$@"

fi

しかし、unshiftのような演算子があるかどうかはわかりませんでした。回避策は次のとおりです。

node default.js "$first_arg" "$@"

ところでこのようにしようとすると変に行動します。

ベストアンサー1

shift 1まず、を使用する必要はありません。位置パラメータを使用し、そのインデックスを分割してパラメータを渡すだけです。

first_arg="$1"

この操作が完了すると、残りのパラメータはとしてアクセスできます"${@:2}"。この表記法は、位置引数2をリストの最後まで示す方法です。

あなたの例を使った設定は次のとおりです。

node foo.js "${@:2}"

最後のelse部分では、次のことを行います。

node default.js "$1" "${@:2}"

"$@"これは、位置パラメータ変換がない場合と同じです。

おすすめ記事