9

私のスクリプト "script.sh" では、1 番目と 2 番目の引数を変数に格納し、残りを別の別の変数に格納したいと考えています。このタスクを実装するには、どのコマンドを使用する必要がありますか? スクリプトに渡される引数の数はさまざまであることに注意してください。

コンソールでコマンドを実行すると

./script.sh abc def ghi jkl mn o p qrs xxx   #It can have any number of arguments

この場合、スクリプトで「abc」と「def」を 1 つの変数に格納する必要があります。「ghi jkl mn op qrs xxx」は別の変数に格納する必要があります。

4

3 に答える 3

13

引数を連結したいだけの場合:

#!/bin/sh

first_two="$1 $2"  # Store the first two arguments
shift              # Discard the first argument
shift              # Discard the 2nd argument
remainder="$*"     # Store the remaining arguments

これにより、元の位置引数が破棄され、確実に再構築できないことに注意してください。それが必要な場合は、もう少し作業が必要です。

#!/bin/sh

first_two="$1 $2"  # Store the first two arguments
a="$1"; b="$2"     # Store the first two argument separately
shift              # Discard the first argument
shift              # Discard the 2nd argument
remainder="$*"     # Store the remaining arguments
set "$a" "$b" "$@" # Restore the positional arguments
于 2012-12-13T22:51:16.290 に答える
4

$@配列をスライスします。

var1=("${@:1:2}")
var2=("${@:3}")
于 2012-12-13T22:57:47.477 に答える
2

すべての引数をテーブルに格納する

  vars=("$@")

  echo "${vars[10]}"
于 2016-04-11T20:23:50.253 に答える