Это должно работать.Напишите скрипт the_script.sh следующим образом:
for F in ${*}
do
echo
c=$( wc -c < ${F})
echo "Number of characters in ${F} is $c"
echo
w=$( wc -w < ${F} )
echo "Number of words in ${F} is $w"
echo
l=$( wc -l < ${F})
echo "Number of lines in ${F} is $l"
done
Для объяснения, ${*}
- это аргументы командной строки, которые передаются, и при использовании с циклом for
, как указано выше, каждый аргумент присваивается $F
в каждой итерации цикла.
Затем в цикле обращайтесь к ${F}
в качестве имени файла.
Для запуска:
./the_script.sh text.txt test2.txt ....
Как и другиеотметил, что вам следует избегать запуска wc
три раза, если файлы большие, поэтому есть один способ запустить его только один раз и обработать счет:
WC=$( wc ${F} )
l=$( echo $WC | awk '{print $1}' )
w=$( echo $WC | awk '{print $2}' )
c=$( echo $WC | awk '{print $3}' )