셸에서 사용자 정의 날짜 형식을 만들고 형식 사이에 공백을 추가하는 가장 좋은 방법은 무엇입니까?
예를 들어, 다음 명령은 어제 날짜를 다음 형식으로 인쇄합니다.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 9
echo
echo
찾고 있는 출력을 얻으려면 $custom_format
매개변수로 호출할 때 큰따옴표를 사용하십시오.echo
당신은 또한 볼 수 있습니다
답변2
Steeldriver에게 감사드립니다. 다음 구문을 사용하여 문제를 해결했습니다.
yesterday_day="$(date -d '-1 day' '+%-d')"
yesterday_month="$(date -d '-1 day' '+%b')"
yesterday="${yesterday_month} ${yesterday_day}"
이제 원하는 공백을 추가할 수 있습니다.