我需要脚本输出结果,但echo "$d"
不输出任何内容。我之前在脚本中创建了 ciphertext.gz ,$fil
是 ciphertext.gz 。 Bash脚本:
echo "Fil: ciphertext.gz"
a="ABCDEFGHIJKLMNOPQRSTUVXYZ"
[[ "${*/-d/}" != "" ]] &&
echo "Usage: $0 [-d]" && exit 1
m=${1:+-}
m=-
t=$fil
printf "Nøgle 'eks. ABCDE': "
read -r k
k=$(echo "$k" | tr [a-vx-z] [A-VX-Z] )
printf "\n"
for ((i=0;i<${#t};i++)); do
p1=${a%%${t:$i:1}*}
p2=${a%%${k:$((i%${#k})):1}*}
d="${d}${a:$(((${#p1}${m:-+}${#p2})%${#a})):1}"
done
echo "$d"
答案 0 :(得分:0)
扩展评论,(不是真正的答案,因为它不清楚代码应该做什么):
这是错误的:
m=${1:+-}
m=-
...因为它具有与以下相同的效果:
m=-
这会从标准输入中读取一个行:
read -r k
...除非密文只有一行,否则可能
击败了接下来的八行代码的目的。即使
标准输入为unzip < ciphertext.gz |
,它只会解码
密文的第一行。
将for
包裹在适当的while read k
循环中。