Ответ 1
Во-первых, ваша функция использует только 1 аргумент, поэтому использование xargs здесь займет только первый аргумент. Вам необходимо изменить функцию на следующее:
ord() {
printf '%d' "[email protected]"
}
Чтобы заставить xargs использовать функцию из вашего bashrc, вы должны создать новую интерактивную оболочку. Что-то вроде этого может работать:
awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' anyFile.txt | xargs bash -i -c 'ord [email protected]' _
Поскольку вы уже зависите от разбиения слов, вы можете просто сохранить вывод awk в массиве.
arr=(awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' anyFile.txt)
ord "${arr[@]}"
Или вы можете использовать awk printf:
awk '{split($0,a,""); for (i=1; i<=100; i++) printf("%d",a[i])}' anyFile.txt