2014-10-20 23 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

相關問題