날짜 형식 사이에 공백이 있습니다.

날짜 형식 사이에 공백이 있습니다.

셸에서 사용자 정의 날짜 형식을 만들고 형식 사이에 공백을 추가하는 가장 좋은 방법은 무엇입니까?

예를 들어, 다음 명령은 어제 날짜를 다음 형식으로 인쇄합니다.10월 9일

custom_format="$(date -d '-1 day' '+%b %-d')"; echo $custom_format

이제 월과 일 사이에 두 개의 공백을 추가해야 하지만 일반적으로 저에게는 작동하지 않습니다. %t추가 클릭 공간을 사용하여 테스트했지만 이 형식에서는 테스트하지 않았습니다.

custom_format="$(date -d '-1 day' '+%b **spaces here** %-d')"; echo $custom_format

답변1

문제는 명령 자체와는 관련이 없습니다 date(원하는 방식으로 형식 문자열에 공백을 삽입하기만 하면 됩니다). 문제는 echo무엇을 하는지, 어떻게 하는지이다아니요인용된 확장자 $custom_format.

quote 를 사용하지 않으면 $custom_format쉘은 값을 그 안에 있는 문자 $IFS(기본적으로 공백, 탭, 줄 바꿈)를 기준으로 단어로 분할한 다음 결과 단어에 대해 파일 이름 생성(와일드카드 지정)을 수행합니다.

즉, 명령은 두 인수 사이에 공백 수에 관계없이 두 개의 인수를 사용하여 호출되는 유사한 명령으로 변환되며, 각 echo $custom_format인수 는 사이에 공백을 두고 하나씩 출력됩니다.echo Oct 9echoecho

찾고 있는 출력을 얻으려면 $custom_format매개변수로 호출할 때 큰따옴표를 사용하십시오.echo

당신은 또한 볼 수 있습니다

답변2

Steeldriver에게 감사드립니다. 다음 구문을 사용하여 문제를 해결했습니다.

yesterday_day="$(date -d '-1 day' '+%-d')"
yesterday_month="$(date -d '-1 day' '+%b')"
yesterday="${yesterday_month}   ${yesterday_day}"

이제 원하는 공백을 추가할 수 있습니다.

관련 정보