1

または、同じことを実装するためのシェルスクリプトの何か?

私は、束の最後の引数を表示する Bourne シェル スクリプトを作成する必要がある割り当てを行っていました。

lastarg arg1 arg2 arg3 ..... argN

これは次のように表示されます:

argN

実装が簡単なため、Java で hasNext と同等のものがあるかどうかはわかりませんでした。失礼でわかりにくかったら申し訳ありません。

4

3 に答える 3

1
   #!/bin/bash
   all=($@)

   # to make things short:
   # you can use what's in a variable as a variable name
   last=$(( $# )) # get number of arguments
   echo ${!last} # use that to get the last argument. notice the !



   # while the number of arguments is not 0
   # put what is in argument $1 into next
   # move all arguments to the left
   # $1=foo $2=bar $4=moo
   # shift
   # $1=bar $2=moo
   while [ $# -ne 0 ]; do
       next=$1
       shift
       echo $next
   done

   # but the problem was the last argument...
   # all=($@): put all arguments into an array
   # ${all[n]}: get argument number n
   # $(( 1+2 )): do math
   # ${#all[@]}: get the count of element in an array

   echo -e "all:\t ${all[@]}"
   echo -e "second:\t ${all[1]}"
   echo -e "fifth:\t ${all[4]}"
   echo -e "# of elements:\t ${#all[@]}"
   echo -e "last element:\t ${all[ (( ${#all[@]} -1 )) ]}"

わかりました、最後の編集 (omg :p)

$ sh unix-java-hasnext.sh  one two three seventyfour sixtyeight
sixtyeight
one
two
three
seventyfour
sixtyeight
all:     one two three seventyfour sixtyeight
second:  two
fifth:   sixtyeight
# of elements:   5
last element:    sixtyeight
于 2012-10-05T22:56:44.867 に答える
0

それでも、これは大げさな推測をする場所ではありません。Bashは、シフト演算子、forループなどを提供します。

(これが引数処理用の場合は、getoptライブラリがあります。bashシェルスクリプトでgetoptsを使用して長いコマンドラインオプションと短いコマンドラインオプションを取得する方法の詳細)

于 2012-10-05T05:05:33.507 に答える
0

POSIX ベースのシェル言語は反復子を実装していません。

あなたが持っている唯一のものは、またはループ変数を更新してテストするための手動のものをfor V in words ; do ... ; done使用してループを実装することです。while

于 2012-10-05T05:03:25.880 に答える