gpt4 book ai didi

bash - 与 let 构造一起使用时,间距如何影响通配符?

转载 作者:行者123 更新时间:2023-12-04 07:16:41 25 4
gpt4 key购买 nike

注意:一般建议使用(( ... ))let . let受分词和全局扩展的影响,这是您在算术评估中很少需要的东西。来源:link link .
无论如何,我很想更好地了解通配符在以下 bash let-constructs 中是如何工作的:

$ set -o xtrace  # used to figure out what is happening


# This section shows that globbing is performed
$ b=2
$ c=4

# watch out: '*' is the globbing operator here, so * expands
# to the files in the current directory
$ let a=b * c # This line will expand to:
# let a=b bcc declaration.sh let-basics.sh c
# Only 'b' will be evaluated because the remainder
# after 'b' causes a syntax error.
$ echo "${a}"
2 # Only b was evaluated so 2 is expected


# In contrast, it seems as if no globbing happens
# here, even though there is a match on the 'bcc' file
# in this directory.
$ let a=b*c
$ echo "${a}"
8
为什么不是 *let a=b*c 中评估作为通配符?

我使用了以下 bash 版本:
$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)

最佳答案

how globbing works


文件名扩展将作为模式的单词替换为与该模式匹配的文件列表。您可以在 bash manual 中了解它.另见 man 7 glob .

within the following bash let-constructs:


就像任何其他命令一样。 let没有任何特别之处。
# here no globbing happens, even though there is a match on 
# the 'bcc' file

我怎么看 a=b*c可以用名为 bcc 的文件替换.发生了什么 a= ? =是一个正常的字符。 a=b*c不匹配 bcc .例如,名为 a=bcc 的文件可以匹配 a=b*c .

Why isn't the * evaluated in let a=b*c as the globbing operator?


是的,您只是没有与该 glob 匹配的文件。

关于bash - 与 let 构造一起使用时,间距如何影响通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68721985/

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