指定されたテキストとキーを使用してビジネスパスワードを実行するシェルスクリプトを作成しようとしていますが、変換された文字の新しいASCII番号を変数に保存する方法がわかりません。コードは以下のように表示されます。
function encode {
local message=$1
local key=$2
local encoded=""
for ((i=0; i<${#message}; i++)); do
local m=`echo $message | cut -c $((i+1))`
local k=`echo $key | cut -c $((i%${#key}+1))`
local m_ascii=`printf "%d" "'$m"`
local k_ascii=`printf "%d" "'$k"`
local e_ascii=$(((m_ascii + k_ascii - 2*97) % 26 + 97))
local e=echo "&e_ascii" | awk '{ printf("%c",$0); }'
encoded="$encoded$e"
done
echo $encoded
}
対応するデコード機能でも同じ問題が発生しました。
ベストアンサー1
一連の変数を使用してシェルコマンドを実行する方法awk
:
message="foobar"
cmd="echo \047"message"\047 | cut -c 3"
if ( (cmd | getline m) > 0 ) { print m }
else { print "Failed ..." | "cat>&2"; exit 1}
close(cmd)
Ed Mortonに感謝します。最初の試みは次のとおりです。
message="foobar"
"echo "message" | cut -c 3" | getline m
print m