Bash: base64 解码一个文件 x 次
Bash: base64 decode a file x times
在一次脚本挑战中,有人要求我解码 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
它按预期工作,我得到了出席的结果。
我现在正在寻找的是一种改进此脚本的方法,因为我远不是专家,并且想看看有什么可以改进我应对此类挑战的方式。
你们中的一些人可以给我一些建议吗?
decode X times (saying 100) a base64 file (base64.txt)
there is only 1 file, that contains 1 line in it.
读取文件内容,解码100次后输出
state=$(<base64.txt)
for i in {1..100}; do
state=$(<<<"$state" base64 --decode)
done
echo "$state"
备注:
- 不鼓励使用反引号
`
。请改用 $(...)
。 bash deprecated and obsolete syntax
for i in cat
是 bash 中常见的反模式。 How to read a file line by line in bash
- 如果文件只有一行,则无需遍历文件中的单词。
- 在 bash 中
echo "$item" |
是 echo
的无用用法(并且它可能不起作用的小风险,例如 item=-e
)。您可以在 bash. 中使用 here string
在一次脚本挑战中,有人要求我解码 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
它按预期工作,我得到了出席的结果。 我现在正在寻找的是一种改进此脚本的方法,因为我远不是专家,并且想看看有什么可以改进我应对此类挑战的方式。
你们中的一些人可以给我一些建议吗?
decode X times (saying 100) a base64 file (base64.txt)
there is only 1 file, that contains 1 line in it.
读取文件内容,解码100次后输出
state=$(<base64.txt)
for i in {1..100}; do
state=$(<<<"$state" base64 --decode)
done
echo "$state"
备注:
- 不鼓励使用反引号
`
。请改用$(...)
。 bash deprecated and obsolete syntax for i in cat
是 bash 中常见的反模式。 How to read a file line by line in bash- 如果文件只有一行,则无需遍历文件中的单词。
- 在 bash 中
echo "$item" |
是echo
的无用用法(并且它可能不起作用的小风险,例如item=-e
)。您可以在 bash. 中使用 here string