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
数字キャラクターは広くて空間を埋める。したがって、%12s
12文字のフィールドが生成されます。ここで示すように文字列が空の場合、12個の空白のみが生成されます。したがって、printf %${I}s
変数I
が指示するだけのスペースが生成された後、ポイントに変更されます。
つまりI
、4
反対側がtr
最初の引数....A-Z
、2番目の引数を取得しますA-ZA-Z
。それらを拡張して一つにまとめると、私たちは得ます。
....ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
I
これは、wasの値と同じ4つの文字移動に対応します。