如何在muttrc中赋值并使用本地变量?
在muttrc中使用本地变量与外部文件内容的正确方法
muttrc支持变量赋值,但你之前的写法存在执行顺序和语法逻辑问题,以下是可行的实现方式:
直接提取文件指定行到变量
如果目标只是获取文件的第一行和最后一行,无需先存储整个文件内容,直接在set命令里调用shell命令完成提取:
set my_var=`head -1 /绝对路径/凭据文件` set my_foo=`tail -1 /绝对路径/凭据文件`
先存储整个文件内容再处理
如果确实需要先把文件内容存入变量再做后续处理,注意muttrc变量不能直接在嵌套的shell命令中当作文件名引用,需通过管道传递变量内容:
- 先读取整个文件到变量:
set creds=`cat /绝对路径/凭据文件`
- 从变量内容中提取指定行:
set my_var=`echo "$creds" | head -1` set my_foo=`echo "$creds" | tail -1`
这里的双引号"$creds"必须保留,否则变量内容中的空格、特殊字符会被shell错误拆分。
关键注意事项
- 务必使用文件的绝对路径,避免mutt启动时因工作目录不同找不到文件;
- 凭据文件权限建议设为
chmod 600 凭据文件,防止其他用户读取敏感信息; - 如果文件内容包含换行或特殊符号,
echo "$creds"的方式能完整保留原始格式,避免解析异常。
内容的提问来源于stack exchange,提问作者Valentin
相关产品推荐
相关产品推荐

