我有一个我这样构建的变量:
ATTSTR="" for file in $LOCALDIR/*.pdf do ATTSTR="${ATTSTR} -a \"${file}\"" done
该变量现在包含(注意文件名中的空格):
ATTSTR=' -a "/tmp/Testpage - PDFCreator.pdf"'
现在我想在这样的命令中使用这个变量:
mutt -s "Subject" "${ATTSTR}" recipient@example.ec
但事实证明它会像这样扩展,因此命令失败(注意扩展变量周围添加的单引号):
mutt -s "Subject" ' -a "/tmp/Testpage - PDFCreator.pdf"' recipient@example.ec
我希望我的变量扩展而没有单引号,使用“$ATTSTR”或$ATTSTR更糟糕.
我怎样才能做到这一点?
解决方法
众所周知,文件名在扩展字符串中是不可靠的;抵制这种诱惑.
而是使用数组来保持文件名不变,无论任何空格如何:
arr=() for f in $somedir/*.pdf do arr+=( -a "$f") done # and for usage/display: mutt -s mysubject "${a[@]}" some@body
请参阅Bash Guide on Arrays以供参考.
原文地址:https://www.jb51.cc/linux/396569.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。