我想PNG的列表附加到电子邮件与狗,所以我做了这个添加标志,每个项目在列表
attachment=""
for png in $(ls *.png); do attachment="$attachment -a $png"; done
mutt $attachment
为了得到这个命令mutt -a pic1.png -a pic2.png -a pic3.png
。有关如何做到这一点的更好的想法?
我想PNG的列表附加到电子邮件与狗,所以我做了这个添加标志,每个项目在列表
attachment=""
for png in $(ls *.png); do attachment="$attachment -a $png"; done
mutt $attachment
为了得到这个命令mutt -a pic1.png -a pic2.png -a pic3.png
。有关如何做到这一点的更好的想法?
由于mutt
将接受命令为:
mutt -apic1.png -apic2.png -apic3.png
(与-a
和文件名之间没有空格),一个美妙的可能性如下:
shopt -s nullglob
files=(*.png)
mutt "${files[@]/#/-a}"
该shopt -s nullglob
,使一个不匹配ing glob扩展到没有任何东西。
"${files[@]/#/-a}"
的扩展将类似于扩展"${files[@]}"
,但每个字段预设为-a
。
这是100%安全,如果你有空格或其他有趣的符号的文件名。
您可以使用BASH数组:
arr=(*.png)
printf " -a %s" "${arr[@]}";
漂亮,并且+1从不使用'ls'来迭代文件。 – akostadinov 2014-10-20 19:56:35
备注:[不要分析ls](http://mywiki.wooledge.org/ParsingLs)。只需使用'for png in * .png'代替。 – 2014-10-20 19:47:44