我正在尝试使用从库中借来的教科书来自学Bourne shell脚本的基础知识,并且我正在完成每章末尾的问题。但是,我只是一个人,我很难过......
编写一个带有零个或多个参数的脚本,并打印列表中的最后一个参数。例如,给定参数'myProgram arg1 arg2 arg3',输出将为'arg3'。
有人可以给我一些关于如何设置这个的建议吗?我正在尝试回顾有关用户输入和参数的部分,但到目前为止我还没有那么多,所以我还没有太多的练习。
答案 0 :(得分:1)
echo ${!#} # bash only
eval echo \${$#} # sh-compatible
参数的数量为$#
。可以通过${!VAR}
间接访问变量。例如:
$ VAR="PATH"
$ echo ${!VAR}
/sbin:/bin:/usr/sbin:/usr/bin
将它们放在一起,如果我们有一个包含整数的变量$n
,我们可以使用$n
访问${!n}
命令行参数。或者代替$n
让我们使用$#
;最后一个命令行参数是${!#}
!
此外,使用数组切片可以更长时间地编写($@
是一个包含所有命令行参数的数组):
echo ${@:$#:$#}
奇怪的是,你不能使用数组索引:
# Does not work
echo ${@[$#]}
答案 1 :(得分:0)
我只想给你一些指示。既然你想学习bash,你可能不仅仅想要一段能够解决问题的代码:
1)你知道如何计算你的bash函数有多少参数吗?
2)你知道如何循环吗?
3)你知道如何“弹出”其中一个论点吗?
4)你知道如何打印出第一个参数吗?
如果你把所有这些放在一起,我打赌你会想出来的。