首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/bin/sh替代${#} in /bin/bash

/bin/sh替代${#} in /bin/bash
EN

Stack Overflow用户
提问于 2022-08-16 16:31:35
回答 2查看 206关注 0票数 0

我正在试图了解${!#} of /bin/bash on /bin/sh的替代方案是什么

我知道${!#},它在/bin/bash上对${0}进行了评估,但是我如何使用/bin/sh获得它

EN

回答 2

Stack Overflow用户

发布于 2022-08-16 16:45:54

在sh中可以得到的最接近的近似是eval-based解决方案。

代码语言:javascript
复制
eval echo "\$${#}"

但是,请记住,如果不小心使用,eval是非常危险的。在实现之前,我建议您考虑是否需要间接性。

例如,上面的代码基本上简化为“打印最后一个参数”。您可以在不使用间接或eval的情况下编写此代码:

代码语言:javascript
复制
for arg in "${0}" "${@}" ; do
:
done
echo "${arg}"
票数 2
EN

Stack Overflow用户

发布于 2022-08-19 05:02:00

在这种情况下使用eval没有什么问题。

不过,您应该将$#用大括号括起来;否则,当位置参数的数量超过9个时,它就无法工作。请参见:

代码语言:javascript
复制
$ set -- a b c d e f g h i j
$ eval "arg=\$$#"
$ echo "$arg"
a0
$
$ eval "arg=\${$#}"
$ echo "$arg"
j
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73377310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档