Ваш вопрос в его нынешнем виде неоднозначен.Это утверждение
res=$((cipher.txt)) % 10
не имеет никакого смысла.Помимо синтаксических ошибок, вы не можете просто интерпретировать весь файл как одно огромное целое число и затем выполнить операцию модуля над ним.Существует ограничение на целочисленный размер, который может обрабатывать Bash.Одна возможность, которая может приблизиться к тому, что вы хотите, состоит в том, чтобы вычислить несколько порций данных и затем напечатать результат:
declare -i SIZE=1
while read -a d;do
for ((i=1;i<${#d[@]};i++));do
echo $((${d[$i]} % 10))
done
done < <(od -t u$SIZE cipher.txt )
Приведенный выше код будет интерпретировать каждый байт cipher.txt
как десятичное число ивыполнить расчет модуля на нем.Если вы измените SIZE=2
, он будет интерпретировать два байта как одно десятичное число и так далее.Это, однако, выведет на экран несколько результатов.
Судя по вашему вопросу, вы можете просто захотеть вычислить какую-то контрольную сумму.В этом случае md5sum
или shasum
могут представлять интерес для вас.
Без дополнительных разъяснений более точный ответ не может быть дан.