我想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