Bash:base64 解码文件x 次



在一次脚本挑战中,有人要求我解码X次(说100次(一个base64文件(base64.txt(。 所以我写了这个小的bash脚本来做到这一点。

for item in `cat base64.txt`;do
for count in {1..100};do
if [ $count -eq 1 ]; then
current=$(echo "$item" |base64 --decode)
else
current=$(echo "$current" |base64 --decode)
fi
if [ $count -eq 100 ]; then
echo $current
fi
done
done

它按预期工作,我得到了出席的结果。 我现在正在寻找一种改进这个脚本的方法,因为我离专家还很远,我想看看有什么可以改善我应对这种挑战的方式。

你们中的一些人可以给我一些建议吗?

解码

X次(说100次(一个base64文件(base64.txt(

只有 1 个文件,其中包含 1 行。

只需读取文件内容,解码100次即可输出。

state=$(<base64.txt)
for i in {1..100}; do
state=$(<<<"$state" base64 --decode)
done
echo "$state"

笔记:

  • 不鼓励使用反引号`。请改用$(...)。bash 已弃用和过时的语法
  • for i in cat是 bash 中常见的反模式。如何在 bash 中逐行读取文件
  • 如果文件仅包含一行,则无需循环访问文件中的单词。
  • 在 bash 中echo "$item" |是对echo的无用用用(并且也是一个小风险,它可能不起作用,例如。item=-e(。在 bash 中,您可以改用此处字符串。

最新更新