2014-10-20 39 views
2

我想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。有关如何做到这一点的更好的想法?

+0

备注:[不要分析ls](http://mywiki.wooledge.org/ParsingLs)。只需使用'for png in * .png'代替。 – 2014-10-20 19:47:44

回答

0

由于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%安全,如果你有空格或其他有趣的符号的文件名。

1

您可以使用BASH数组:

arr=(*.png) 
printf " -a %s" "${arr[@]}"; 
+1

漂亮,并且+1从不使用'ls'来迭代文件。 – akostadinov 2014-10-20 19:56:35

相关问题