gpt4 book ai didi

bash - 可以在 Bash 中将文字字符 * 作为命令行参数传递吗?

转载 作者:行者123 更新时间:2023-11-29 09:10:12 24 4
gpt4 key购买 nike

拿bash脚本wtf.sh

#!/bin/bash
echo $1
echo $2
echo $3
./wtf.sh 1 2 3 
1
2
3

./wtf.sh * * *



end

./wtf.sh 1 * *
1
wtf.sh
wtf.sh

./wtf.sh 1 "*" "*"
1
wtf.sh
wtf.sh

我知道 * 是 Bash 中的特殊参数,但这是否意味着不可能将 * 本身作为文字字符从命令行传递?我期待的是

./wtf.sh * * * 
*
*
*

我该如何实现?

最佳答案

您可以通过以下方式传递文字 *:

  • 将其放在引号中:"*"

  • 将其放在撇号中:'*'

  • 转义反斜杠:\*

这些都是等价的(在本例中)。

不起作用的原因是您的脚本有问题:当您不引用 $1(以及 $2$3),你告诉 shell 对其内容执行路径名扩展和分词。这实际上几乎从来都不是您想要的——而且在这种情况下它显然不是您想要的。所以你的脚本应该是这样的:

#!/bin/bash
echo "$1"
echo "$2"
echo "$3"

这里,参数必须用双引号括起来("$1"),这样可以进行参数扩展,但禁止路径名扩展和分词。

关于bash - 可以在 Bash 中将文字字符 * 作为命令行参数传递吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26445944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com