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
相关产品推荐
相关产品推荐

