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

Bash脚本中变量无法赋值问题求助

问题分析与解决

你的问题出在变量赋值的写法上:

  • 你写的FNAME=cmd basename $i是临时给basename命令设置环境变量FNAME=cmd,这个变量只在basename进程运行时有效,脚本的当前shell根本读取不到它,而且这完全不是你想要的「把basename的输出存到FNAME」的逻辑。
  • 你看到的BrainLearning.png是basename命令本身直接输出的内容,和FNAME变量无关,所以后续echo $FNAME会是空行。

正确写法

用命令替换把basename的输出赋值给变量,推荐用$()的写法(比反引号可读性更好),同时给变量和参数加双引号,避免文件名含空格时出错:

for i in ~/Ws/*.png; 
do 
  echo "$i"; 
  FNAME=$(basename "$i");
  echo "$FNAME";
done

执行后就能得到你期望的输出:

/home/Ws/BrainLearning.png
BrainLearning.png
BrainLearning.png

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:15:35