问题现象从 Windows 批处理转过来的人,常会碰到一个思维断层。批处理里取通配符结果很自然:for %%I in (FILE*) do set "VAR=%%~nxI"循环体是语法的一部分,哪怕里面只有一条赋值。切到 Bash 之后,想用for拿到同样的效果,却发现循环体不能为空:forVARinFILE*;do# 这里必须至少有一条命令done如果只是想把通配匹配到的文件名存进变量、循环体内不做任何事,就得专门找个东西填进去。这种"为了满足语法而必须做点什么"的感觉很不舒服,于是常见两种应付方式:塞一条echo用来调试,或者塞一条无害的命令假装有事。更别扭的地方在于,这段代码的意图明明是"取值",用for只是因为 Wi