Если вы просто передаете отдельные имена файлов в качестве аргументов в ваш скрипт, которые находятся в вашем каталоге /home/tst/test-dir
, и вы хотите счетчик строк и имя файла в email-body
, то вы можете использовать простой цикл, например,
#!/bin/bash
dir=/home/tst/test-dir
:> email-body ## truncate email-body before each use
for files in "$@" ## loop over arguments
do
wc -l "$dir/$files" >> email-body ## add line-count and name to email
done
Пример использования / Вывод
Используя мой каталог $HOME/tmpd
и вызывая скрипт как:
$ bash tmp/embody.sh afile cmtfile file sfile
приводит к файлу email-body
в данном каталоге, содержащему:
$ cat email-body
8 /home/david/tmpd/afile
8 /home/david/tmpd/cmtfile
6 /home/david/tmpd/file
12 /home/david/tmpd/sfile
Другой вариант, который будет несколько более эффективным, - просто перенаправить вывод цикла for
один раз во время завершения, например,
#!/bin/bash
dir=/home/tst/test-dir
for files in "$@" ## loop over arguments
do
wc -l "$dir/$files" ## output line-count and name
done > email-body ## single redirect to email at end of loop
Это также исключает необходимость усечения перед циклом. (тот же вывод в email-body
)