1

或者shell脚本中的任何东西来实现同样的事情?

我正在做一个任务,要求我们编写一个 Bourne shell 脚本来显示一堆的最后一个参数,例如:

最后一个参数 arg1 arg2 arg3 ..... 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 )) ]}"

好的,最后一次编辑(天哪: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

基于 POSIX 的 shell 语言不实现迭代器。

您唯一拥有的东西是for V in words ; do ... ; done或使用while手动实现循环来更新和测试循环变量。

于 2012-10-05T05:03:25.880 回答
0

这仍然不是胡乱猜测的地方:Bash 提供移位运算符、for 循环等。

(如果这是用于参数处理,则您有 getopt 库。在 bash shell 脚本中使用 getopts 获取长短命令行选项中的更多信息)

于 2012-10-05T05:05:33.507 回答