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자를 예약하고 두 번째 매개변수에 다음 10자를 예약합니다.
답변1
printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$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