如何使用shell脚本将文件名指定部分存储到变量
解决方案
错误点说明
你编写的赋值语句不符合Shell语法规则:
- 变量赋值时等号两侧不能加空格,
fileDate=加空格的写法会被Shell识别为「临时将fileDate设为空值,执行后续的echo管道命令」,不会完成变量持久赋值 - 要将命令的执行结果存入变量,需要使用命令替换语法
$(命令)包裹要执行的语句
正确实现代码
# 定义原文件名变量 file='20210823_Club_Member_Name_by_ID.txt' # 命令替换赋值 fileDate=$(echo "$file" | awk -F'[_.]' '{print $1}') # 打印验证 echo "$fileDate"
轻量化优化方案(无需调用外部命令)
可以直接使用Shell内置的参数扩展语法实现需求,相比调用awk、echo命令性能更高:
file='20210823_Club_Member_Name_by_ID.txt' # 截取第一个下划线之前的所有内容 fileDate=${file%%_*} echo "$fileDate"
内容的提问来源于stack exchange,提问作者Foody
相关产品推荐
相关产品推荐

