1

図書館から借りた教科書を使って Bourne shell scripting の基礎を独学で学ぼうとしており、各章の最後にある質問に取り組んでいます。しかし、私は1つに到達したばかりで、困惑しています...

0 個以上の引数を取り、リストの最後の引数を出力するスクリプトを作成します。たとえば、引数 'myProgram arg1 arg2 arg3' を指定すると、出力は 'arg3' になります。

これを設定する方法について誰かアドバイスをもらえますか?ユーザーの入力と引数に関するセクションを復習しようとしていますが、これまであまり取り組んでいないので、まだあまり練習していません。

4

2 に答える 2

2
echo ${!#}         # bash only
eval echo \${$#}   # sh-compatible

説明

引数の数は です$#。変数には、 を介して間接的にアクセスできます${!VAR}。例えば:

$ VAR="PATH"
$ echo ${!VAR}
/sbin:/bin:/usr/sbin:/usr/bin

これらをまとめると$n、整数を含む変数がある場合、 で$nth コマンドライン引数にアクセスできます${!n}。または代わりに$n使用しましょう$#; 最後のコマンドライン引数は${!#}!


さらに、これは、配列スライシング ($@すべてのコマンドライン引数を保持する配列)を使用して、次のように長く書くことができます。

echo ${@:$#:$#}

奇妙なことに、配列インデックスは使用できません。

# Does not work
echo ${@[$#]}
于 2012-10-01T02:09:18.330 に答える
0

いくつかのヒントをお伝えします。あなたは bash を学びたいので、質問が求めることを実行するコードだけが必要なわけではありません。

1) bash 関数の引数の数を数える方法を知っていますか?

2) ループする方法を知っていますか?

3) 引数の 1 つを「ポップ」する方法を知っていますか?

4) 最初の引数を出力する方法を知っていますか?

これだけ揃えれば、きっと思いつくはずです。

于 2012-10-01T02:07:37.850 に答える