带有用户输入的Bourne shell脚本

时间:2012-10-01 01:59:56

标签: unix sh

我正在尝试使用从库中借来的教科书来自学Bourne shell脚本的基础知识,并且我正在完成每章末尾的问题。但是,我只是一个人,我很难过......

  

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

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

2 个答案:

答案 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)你知道如何打印出第一个参数吗?

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