如何在ZSH中使用函数参数作为字符串的一部分?

How to use function argument as a part of a string in ZSH?

提问人:TimSO 提问时间:10/26/2023 更新时间:11/8/2023 访问量:38

问:

我有带有参数的 ZSH 函数 test() { echo $1ext; } 调用如下: 测试参数

如果函数中的 $1 是字符串的一部分,则 $1ext 不起作用(适用于 $1-ext 或 $1.ext)。 有没有办法这样使用:$1ext? (在回声的不恰当解释中,我可以使用&&,但这不是真正的回声,而是更大功能的参数。

函数 参数 zsh

评论

0赞 TimSO 10/26/2023
解决方案是将ext附加到参数:stackoverflow.com/questions/2250131/...
1赞 Shawn 10/27/2023
printf "%sext\n" "$1"或者也许print -r -- "${1}ext"
1赞 chepner 10/31/2023
你看到了什么错误? 文档等同于zsh$1ext${1}ext
0赞 TimSO 11/1/2023
@chepner 这正是我写的每个链接的推送方式。关键是一开始对我来说并不明显,因为我以前从未使用过它。谢谢。
1赞 user1934428 11/8/2023
嗯,这是显而易见的,因为 zsh 视为参数编号 101。以同样的方式,正在展开名为 的参数,而将扩展参数 ,并向其添加字母。$101$abcabc${ab}cabc

答:

0赞 TimSO 11/8/2023 #1

解决方案是将ext附加到参数:如何附加到已经存在的字符串?

ZSH 将 $101 视为参数编号 101。同样,$abc 正在扩展名为 abc 的参数,而 ${ab}c 将扩展参数 ab,并在其中添加字母 c。

注意:我之前添加了一个答案,但不知何故它被更改为我的第一条评论。感谢那些也发表评论的人。