文字を数字でエンコード

文字を数字でエンコード

次のスクリプトは、ユーザーに入力を要求した後、入力を出力として印刷します。

#!/bin/bash
 printf "\e[31mType/Enter something: $pdir\e[m  ";
 read -e userInput
 if [[ -n "$userInput" ]]
 then
     pdir=$userInput 
 fi
 printf "\e[96mYour code is: $pdir\e[m\n";

私の質問は次のとおりです

  1. 古いコードはどのように "userInput"の文字だけを読むことができますか?
  2. "userInput"エントリを出力番号に変換するにはどうすればよいですか?たとえば、「John」と入力すると、出力番号をどのように取得できますか?

答え1

2つの方法を考えてみました。

各文字をASCII値に変換

$ echo John | perl -lne 'printf "%03d", ord for split ""'
074111104110

または必須ではない場合数字、ちょうどコード、base64

$ echo John | base64
Sm9obgo=

デコード:

$ echo 074111104110 | perl -ne 'print chr for /(\d{3})/g'
John

$ echo Sm9obgo= | base64 --decode
John

関連情報