合并我的命令的输入

合并我的命令的输入

我有一个每个英文字母的数字表。每个字母都有随机数。我的命令将这些随机数转换为二进制代码。但它同时只能转换 1 个字母。我想在输入时自动合并任何单词。比如苹果、钢笔、桌子……

我的命令

#/bin/bash

echo "Write a letter"
read n
a=$(grep $n ~/Desktop/letter-table | awk '{print $2}')

echo `perl -e 'printf "%b\n",'$a`

输出

[hoovy@turbine Desktop]$ sh code-lang.sh
Write a letter
a
1111001
[hoovy@turbine Desktop]$ sh code-lang.sh
Write a letter
p
10010001
[hoovy@turbine Desktop]$ sh code-lang.sh
Write a letter
p
10010001
[hoovy@turbine Desktop]$ sh code-lang.sh
Write a letter
l
10010001
[hoovy@turbine Desktop]$ sh code-lang.sh
Write a letter
e
10111010
[hoovy@turbine Desktop]$

答案1

只需迭代字符串即可。我还删除了您的grepecho因为不需要它们:

#!/bin/bash
read -p "Enter a string:" -r string

for((i=0; i<${#string};i++)); do
  a=$(awk -v s="${string:$i:1}" '$1==s{print $2}' ~/Desktop/letter-table)
  perl -e 'printf "%b\n", $ARGV[0]' "$a"
done

或者,更好的是,将字符串作为参数:

#!/bin/bash
string="$*"

for((i=0; i<${#string};i++)); do
  a=$(awk -v s="${string:$i:1}" '$1==s{print $2}' ~/Desktop/letter-table)
  perl -e 'printf "%b\n", $ARGV[0]' "$a"
done

并像这样运行脚本:

$ foo.sh apple
1111001
10010001
10010001
1111001
10111010

相关内容