このCeaser Cipherコードを説明できる人はいますか?

このCeaser Cipherコードを説明できる人はいますか?

IN="MJHVIZN ZPIO YJHPN"

for I in $(seq 25); do
    echo $I $IN | tr $(printf %${I}s | tr ' ' '.')\A-Z A-ZA-Z
done

誰でもこのコードを説明できますか?この入れ子になったドアのせいで混乱しています。

echo $I $IN | tr $(printf %${I}s | tr ' ' '.')\A-Z A-ZA-Z

ベストアンサー1

では、printf固定長フィールドに文字列を印刷します。%[number]s数字キャラクターは広くて空間を埋める。したがって、%12s12文字のフィールドが生成されます。ここで示すように文字列が空の場合、12個の空白のみが生成されます。したがって、printf %${I}s変数Iが指示するだけのスペースが生成された後、ポイントに変更されます。

つまりI4反対側がtr最初の引数....A-Z、2番目の引数を取得しますA-ZA-Z。それらを拡張して一つにまとめると、私たちは得ます。

....ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

Iこれは、wasの値と同じ4つの文字移動に対応します。

おすすめ記事