我正在尝试使用从图书馆借来的教科书自学 Bourne shell 脚本的基础知识,并且正在解决每章末尾的问题。然而,我刚拿到一个,我被难住了......
编写一个脚本,它接受零个或多个参数并打印列表中的最后一个参数。例如,给定参数“myProgram arg1 arg2 arg3”,输出将为“arg3”。
谁能给我一些关于如何设置这个的建议?我正在尝试查看有关用户输入和参数的部分,但到目前为止我还没有使用那么多,所以我还没有太多练习。
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 ${@[$#]}
我只是给你一些指示。既然你想学习 bash,你可能不只是想要一段代码来完成问题所要求的:
1) 你知道如何计算你的 bash 函数有多少个参数吗?
2)你知道如何循环吗?
3)你知道如何“弹出”其中一个论点吗?
4) 你知道如何打印出第一个参数吗?
如果你把所有这些放在一起,我打赌你会想出来的。