Вы можете легко заполнить массив списком имен файлов, а затем использовать это как аргумент -a
.
while IFS= read -r attachment; do
attachments+=("$attachment")
done < listoffilestoattach.txt
for f in ../*.log; do
attachments+=("$f")
done
mutt -s "subject of message" -a "${attachments[@]}" -- [email protected] < mail.txt
Если вы используете bash
4 или более позднюю версию, вы можете заменить петлю while
с (немного) более интерактивной дружественным readarray
команды:
readarray -t attachments < listoffilestoattach.txt
Если, как представляется, для случая mutt
требуется один файл на -a
, тогда вам понадобится что-то другое:
while IFS= read -r attachment; do
attachments+=(-a "$attachment")
done < listoffilestoattach.txt
for f in ../*.log; do
attachments+=(-a "$f")
done
mutt -s "subject of message" "${attachments[@]}" -- [email protected] < mail.txt
Использование readarray
, попробуйте
readarray -t attachments < listoffilestoattach.txt
attachments+=(../*.log)
for a in "${attachements[@]}"; do
attach_args+=(-a "$a")
done
mutt -s "subject of message" "${attach_args[@]}" -- [email protected] < mail.txt
Как поместить Ls ../*.log внутри приложения? – KcFnMi
'приложения + = (../*.log)' – chepner
Не работает @chepner. Добавляется только один файл, а остальные файлы - как адрес электронной почты. – KcFnMi