または、同じことを実装するためのシェルスクリプトの何か?
私は、束の最後の引数を表示する Bourne シェル スクリプトを作成する必要がある割り当てを行っていました。
lastarg arg1 arg2 arg3 ..... argN
これは次のように表示されます:
argN
実装が簡単なため、Java で hasNext と同等のものがあるかどうかはわかりませんでした。失礼でわかりにくかったら申し訳ありません。
#!/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
それでも、これは大げさな推測をする場所ではありません。Bashは、シフト演算子、forループなどを提供します。
(これが引数処理用の場合は、getoptライブラリがあります。bashシェルスクリプトでgetoptsを使用して長いコマンドラインオプションと短いコマンドラインオプションを取得する方法の詳細)
POSIX ベースのシェル言語は反復子を実装していません。
あなたが持っている唯一のものは、またはループ変数を更新してテストするための手動のものをfor V in words ; do ... ; done
使用してループを実装することです。while