6

ケース 1: 次のようにシェル スクリプトにいくつかのパラメーターを渡しているとします。

./myshell_script a b c d 

そして、実行echo $#すると、コマンドラインから渡したパラメーターの数が得られ、[ユーザーが渡した引数の数がわからないため]のような変数に保存しました:

var1 = `echo "$#"`

ケース 2: $4 は最後の引数の名前を教えてくれます。

保存したい場合

次にvar2

var2 = $4 

私の質問は:

var1 から取得した値を var2 に直接格納したい場合、シェル スクリプトでどのように可能でしょうか?

例:

./myshell_script.sh a b c

var1 = `echo "$#"` ie var1 = 3

今私は欲しい

var2 = c [つまり、ユーザーがコマンドラインから渡すパラメーターの数がわからないため、常に最後のパラメーター]

私がしなければならないこと ?

4

4 に答える 4

10

以下のスクリプトは、スクリプトに渡される最初と最後の引数を取得する方法を示しています。

numArgs="$#"
echo "Number of args: $numArgs"

firstArg="$1"
echo "First arg: $firstArg"

lastArg="${!#}"
echo "Last arg: $lastArg"

出力:

$ ./myshell_script.sh a b c d e f
Number of args: 6
First arg: a
Last arg: f
于 2013-10-30T09:25:07.230 に答える
4

ここから方法を引用する:

for last; do : ; done
echo "${last}"

スクリプトに渡された最後の引数は、変数に格納されますlast

リンクで述べたように、これは POSIX 互換シェルで機能し、任意の数の引数に対して機能します。


ところで、あなたのスクリプトがあなたの質問に書いたように機能するかどうかは疑問です:

var1 = `echo "$#"`

の周りのスペースを削除する必要があります=。つまり、次のように言います。

var1=`echo "$#"`

また

var1=$(echo "$#")
于 2013-10-30T09:24:26.587 に答える