Bash에서 문자열 변수를 정렬하려고 합니다. 이는 예상된 동작입니다.
if str1="123" , then str2=" 123"
if str1="1234" , then str2=" 1234"
if str1="12345", then str2=" 12345"
printf를 사용하여 인쇄하는 방법을 알아냈는데, 인쇄하지 않고 변수 내부에서 해야 합니다.
답변1
변수에 단일 바이트, 단일 폭 문자만 포함되어 있다고 가정합니다.
printf -v str2 %8s "$str1"
멀티바이트(여전히 단일 너비) 문자가 포함된 경우 다음을 수행할 수 있습니다.
printf -v str2 %8s%s '' "$str1"
str2=${str2: -8}
(그러나 주의할 점은자르기값이 8자보다 큼).
여기에 내장 bash
된 명령은 결과를 변수에 저장하는 것을 printf
지원 하지만 그렇지 않은 경우에도 명령 대체를 사용할 수 있습니다.-v
printf
str2=$(printf %8s "$str1")