1

我正在尝试使用从图书馆借来的教科书自学 Bourne shell 脚本的基础知识,并且正在解决每章末尾的问题。然而,我刚拿到一个,我被难住了......

编写一个脚本,它接受零个或多个参数并打印列表中的最后一个参数。例如,给定参数“myProgram arg1 arg2 arg3”,输出将为“arg3”。

谁能给我一些关于如何设置这个的建议?我正在尝试查看有关用户输入和参数的部分,但到目前为止我还没有使用那么多,所以我还没有太多练习。

4

2 回答 2

2
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 ${@[$#]}
于 2012-10-01T02:09:18.330 回答
0

我只是给你一些指示。既然你想学习 bash,你可能不只是想要一段代码来完成问题所要求的:

1) 你知道如何计算你的 bash 函数有多少个参数吗?

2)你知道如何循环吗?

3)你知道如何“弹出”其中一个论点吗?

4) 你知道如何打印出第一个参数吗?

如果你把所有这些放在一起,我打赌你会想出来的。

于 2012-10-01T02:07:37.850 回答