$(sed -e "p;s/.$1//")
это часть, которая висит. Вы можете проверить это, добавив set -x
и выполнив свой скрипт. Это связано с тем, что sed
требует входной файл / поток, и ему ничего не дано.
Вы можете использовать bash замену подстроки "${file//.$1}"
$ { строка // $ substring_to_remove /}
Все вхождения содержимого после //
заменяются в основной строке содержимым после последнего /
Итак, рабочая функция будет
decrypt() {
echo $1
for file in $(find . -name "*.$1.*")
do
echo "some $file"
openssl enc -aes-128-cbc -a -d -salt -pass pass:asdffdsa -in $file -out "${file//.$1}"
done
}