0

次のbashスクリプトがあります

pass="kall"
cnumb="000000000000"

for (( i=0; i<${#pass}; i++))
do
    code=`printf '%03d' "'${pass:i:i+1}"` #generate the code ASCII of letter as string with 3 chars
    cnumb = .... #put the code ASCII of "k" in the first bloc of 3 chars , put the code ASCII of "a" in the second bloc of 3 chars, ...
done

コードで説明されているように、ループ内の各反復で、cnumb の 3 文字のブロックを 3 文字の別のブロックに置き換えたいと考えています。バッシュでそれを行う方法

${cnumb:i:i+3}部分文字列をコードに置き換えることは可能ですか?

4

1 に答える 1

1

cnumb にゼロを入れる必要はありません。また、次の%03dテンプレートを使用しprintfます。

#! /bin/bash
pass="kall"
cnumb=''

for (( i=0; i<${#pass}; i++))
do
    code=`printf '%03d' "'${pass:i:i+1}"` #generate the code ASCII of letter as string with 3 chars
    cnumb+=$code
done
echo "$cnumb"
于 2013-05-13T10:45:27.800 に答える