You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于ShellCheck SC2048的疑问:${array[*]}为何未扩展额外文件?

关于${array[*]}未扩展出t3、t4的原因解释

你的疑惑核心是对${array[*]}的作用理解有偏差:

  • 首先,脚本里array=(t1 t2)已经明确将数组的元素固定为t1和t2,数组的内容完全由你手动定义的初始值决定,不会自动扫描当前目录的文件进行填充。
  • ${array[*]}的作用仅仅是将数组中已有的元素展开为多个独立参数,比如你定义的数组里是t1、t2,它就只会展开成这两个参数,和目录里存在的t3、t4没有任何关联。

ShellCheck SC2048规则里提到的“扩展为多个参数”,指的是数组内部元素的展开,而非自动匹配目录文件。

如果你的需求是复制当前目录下所有t开头的文件到dir目录,有两种更合适的写法:

  • 直接使用通配符匹配:
    cp t* ./dir
    
  • 先将匹配到的文件存入数组,再复制(推荐用"${array[@]}",双引号+@能保留每个文件名作为独立参数,适配带空格的文件名场景):
    array=(t*)
    cp "${array[@]}" ./dir
    

内容的提问来源于stack exchange,提问作者Jack Ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:43:12