或者shell脚本中的任何东西来实现同样的事情?
我正在做一个任务,要求我们编写一个 Bourne shell 脚本来显示一堆的最后一个参数,例如:
最后一个参数 arg1 arg2 arg3 ..... 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 )) ]}"
好的,最后一次编辑(天哪: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
基于 POSIX 的 shell 语言不实现迭代器。
您唯一拥有的东西是for V in words ; do ... ; done
或使用while
手动实现循环来更新和测试循环变量。
这仍然不是胡乱猜测的地方:Bash 提供移位运算符、for 循环等。
(如果这是用于参数处理,则您有 getopt 库。在 bash shell 脚本中使用 getopts 获取长短命令行选项中的更多信息)