Shell脚本调用Vim无法打开指定文件名的问题排查
问题分析与修复
你的脚本核心问题出在读取输入的语法错误,导致没有正确获取到文件名变量,进而Vim打开了无文件名的空缓冲区。
具体错误点:
read $name语法错误:read命令后直接写变量名即可,不需要加$符号。加$会把name变量当前的空值作为要读取的变量名,等于没把输入内容存入name变量,最终$name是空值,Vim自然打开无文件名的空文件。- Git提交信息变量错误:
git commit -m '$varname'里用了单引号,变量不会被解析,而且变量名写成了varname,和前面的name不一致,提交信息会变成字面的$varname。 - 权限修改语句风险:
chmod 755 *[!README.md]会给当前目录下除了README.md之外的所有文件加755权限,可能误改其他不需要修改的文件,建议只针对目标文件修改权限。
修复后的脚本:
#!/bin/bash echo "请输入文件名:" read name vi "$name" # 只给目标文件设置权限 chmod 755 "$name" git add "$name" git commit -m "新增文件:$name" git push
额外说明:
- 给变量加双引号
"$name"可以避免文件名包含空格等特殊字符时出现错误。 - 提交信息改成明确的描述,比单纯用变量更清晰,也能避免变量解析问题。
内容的提问来源于stack exchange,提问作者Starz
相关产品推荐
相关产品推荐

