bash - 为什么它不会回显 "$d" anwser
问题描述
我需要脚本来输出结果,但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"
解决方案
扩展评论,(不是真正的答案,因为不清楚代码应该做什么):
这是错误的:
m=${1:+-} m=-
...因为它具有与以下相同的效果:
m=-
这从标准输入中读取一行:
read -r k
...除非密文只有一行长,否则可能会破坏接下来八行代码的目的。即使是标准输入
unzip < ciphertext.gz |
,它也只会解码第一行密文。将其包裹
for
在适当的while read k
循环中。
推荐阅读
- memory - 相对于计算机科学,变量占用的内存大小
- amazon-web-services - 克隆 EMR 笔记本
- python - 在一个命令行打印多个对象时出错 print() (Spyder 2.7)
- javascript - 如何在反应原生博览会中使用按钮发送通知
- visual-studio-code - Mac 上的 VSC 构建 (CMD-Shift-B) 命令问题
- google-bigquery - 有没有办法修改和重命名 BigQuery 中记录内的列,然后使该列保持与以前相同的名称和位置?
- amazon-web-services - AWS Secret Manager 访问拒绝问题
- java - JLabel 不能垂直对齐
- php - Wordpress 帖子/页面未立即发布-> 错过了日程安排
- azure-pipelines - 用于在单个解决方案中构建和发布 Web 应用程序和 Windows 服务(本地)的 Azure 管道