为什么不回应" $ d" anwser

时间:2018-04-30 08:18:52

标签: bash

我需要脚本输出结果,但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"

1 个答案:

答案 0 :(得分:0)

扩展评论,(不是真正的答案,因为它不清楚代码应该做什么):

  1. 这是错误的:

    m=${1:+-}
    m=-
    

    ...因为它具有与以下相同的效果:

    m=-
    
  2. 这会从标准输入中读取一个行:

    read -r k
    

    ...除非密文只有一行,否则可能 击败了接下来的八行代码的目的。即使 标准输入为unzip < ciphertext.gz |,它只会解码 密文的第一行。

    for包裹在适当的while read k循环中。