print
メールに添付ファイルとして送信されるスクリプトを介してファイルに何かを書き込もうとします。
さて、ファイルに正しい形式を維持しようとしています。 HTMLテーブルに似たテーブル形式を印刷して保持できますか?
ループでは、コードが次の内容を追加すると仮定します。
`print "|App Name:$1\tRegion:$2\tEnvironment:$3| >> file_attch.dat`
これで、パラメータのサイズは変更できます。たとえば、$1 は 7~10 文字、$2 は 5~15 文字、$3 は 10~20 文字です。さて、異なる文字長の連続した行の添付ファイルを印刷するのは奇妙に見えます。
最初の10文字を1ドルで予約し、15文字を2ドルで予約してから、20文字を3ドルで予約できます。print
目的を達成できる形式のタイプです。
修正する:
たぶん私は質問を正しくしていないかもしれません。例は次のとおりです。
App:PROPIA Region:silo2 Env:INT
App:SRO Region:silo3 Env:SYS
上記の場合、PROPIAとSROは文字の長さによって異なるため、表形式は保持されません。私は次のようなものが欲しい:
App:PROPIA Region:silo2 Env:INT
App:SRO Region:silo3 Env:SYS
たとえば、実際の文字長に関係なく、最初のパラメータに10文字を予約し、2番目のパラメータに次の10文字を予約します。
ベストアンサー1
printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
これは、3つの文字列に対して10、15、20文字を予約し、そのスペース内で文字列を左揃えにします。
スクリプト例:
set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
shift 3
done
出力:
App:PROPIA Region:silo2 Env:INT
App:SRO Region:silo3 Env:SYS