내 명령의 입력을 병합합니다.

내 명령의 입력을 병합합니다.

각 영어 문자에 대한 숫자 표가 있습니다. 각 문자에는 임의의 숫자가 있습니다. 내 명령은 이러한 난수를 이진 코드로 변환합니다. 하지만 한 번에 한 글자만 변환할 수 있습니다. 입력할 때 자동으로 단어를 병합하고 싶습니다. 사과, 펜, 테이블 등...

내 주문

#/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

관련 정보