我正在尝试编写一个脚本,以查找名称中带有.production
的所有文件,解密这些文件并保存它们的副本,而无需使用.production
。
示例文件:
./functions/key.production.json
./src/config.production.js
这是我的代码:
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 $(sed -e "p;s/.$1//")
done
}
答案 0 :(得分:1)
$(sed -e "p;s/.$1//")
是挂起的部分。您可以通过添加set -x
并执行脚本来进行检查。这是因为sed
期望输入文件/流,而没有提供输入文件/流。
您宁愿使用bash子串替换"${file//.$1}"
$ {string // $ 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
}
答案 1 :(得分:0)
通过使用while循环,可以避免使用子外壳 $(find。-name“ 。$ 1。”)。
decrypt() {
echo "$1"
local file
while read -r file; do
echo "some $file"
PROCESS-YOUR-FILE-AND-DO-YOUR-STUFF_HERE
done < <(find . -name "*.$1.*")
}
请参见