执行脚本生成Markdown文件时遇rnsend-email命令未找到错误的原因
脚本执行错误:
rnsend-email: command not found 原因解析 这个错误的核心问题出在shell对变量内容的解析方式上,咱们一步步拆解:
变量未被双引号包裹导致命令拆分
你直接用了echo $body > ravgeet.md,没有给$body加上双引号。在shell中,当不使用双引号引用变量时,shell会对变量内容进行「单词拆分」和「路径扩展」——它会把所有空白字符(包括\r、\n、空格)都当成分隔符,把整个字符串拆分成多个独立的“命令片段”。\r回车符带来的命令名错乱
你的body里用了Windows风格的\r\n换行符,当shell解析时,\r(回车符)会被当成普通字符处理。原本在代码块里的send-email ravgeetdhillon@gmail.com被拆分出来后,前面的\r会和字符拼接,导致shell误以为你要执行rnsend-email这个不存在的命令(\r会把光标移到行首,覆盖了前面的位置,最终呈现出错误的命令名)。
解决方法
- 给变量加上双引号:把输出命令改成
echo "$body" > ravgeet.md,双引号会保留变量里的换行、空格等格式,避免shell错误解析内容为命令。 - 统一换行符风格:把
body里的\r\n改成Unix/Linux风格的\n,减少跨平台换行符带来的解析问题。
内容的提问来源于stack exchange,提问作者Ravgeet Dhillon
相关产品推荐
相关产品推荐

