调试csh脚本:字符串拼接生成文件路径遇多余空格问题求助
解决csh脚本字符串拼接多余空格问题
你的核心问题不是拼接方式不对,而是变量rdir或nm本身包含多余空格——从输出能看到REC_FILE_后面跟着大量空格,说明rdir的结尾带了不必要的空格,或者nm的开头有空格。
第一步:确认变量原始内容
先在脚本里加两行,把变量内容用引号包裹打印,直观看到空格位置:
echo "rdir内容: '$rdir'" echo "nm内容: '$nm'"
执行后如果看到rdir的结尾有一堆空格,那就是问题所在。
修复方案
1. 清理rdir的末尾空格
直接过滤掉rdir末尾的所有空格,再拼接:
set rdir_clean = `echo "$rdir" | sed 's/[[:space:]]*$//'` set file = "${rdir_clean}${nm}"
或者用awk实现同样效果:
set rdir_clean = `echo "$rdir" | awk '{gsub(/[[:space:]]+$/, ""); print}'`
2. 直接过滤拼接后的所有空格
如果确定路径里不需要任何空格,可以一步到位:
set file = `echo "${rdir}${nm}" | tr -d ' '`
3. 检查变量赋值的源头
看看你最初是怎么给rdir赋值的——如果是从命令输出、文件读取来的,很可能带了换行或空格。比如:
# 错误示例:从文件读取时没处理空格 set rdir = `cat path_config.txt` # 改成带过滤的赋值 set rdir = `cat path_config.txt | sed 's/[[:space:]]*$//'`
验证结果
修改后打印最终变量确认:
echo "最终路径: '$file'"
正常情况下就能得到你要的../picks/rec_files/REC_FILE_68320.txt。
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

