![쉘 스크립트에서 입력 문자열을 날짜로 변환](https://linux55.com/image/47882/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%9E%85%EB%A0%A5%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EB%82%A0%EC%A7%9C%EB%A1%9C%20%EB%B3%80%ED%99%98.png)
내 쉘 스크립트:
#!/bin/bash
echo "$1";
startd=$(date -d "$1" +"%Y%m%d");
echo "$startd";
내 명령:
sudo ./test.sh "20151010"
산출:
20151010
20150213
입력한 날짜가 아닌 오늘 날짜가 출력되는 거 아시죠?
답변1
OS X 버전은 date
이 -f
옵션을 사용하여 형식이 지정된 날짜/시간을 구문 분석합니다.
date -j -f '%Y%m%d' "$1" +'%Y%m%d'
이 -j
옵션을 사용하면 시스템 시계를 설정하지 않고 시간만 인쇄합니다. 따라서 전체 스크립트는 다음과 같습니다.
#!/bin/bash
echo "$1";
startd=$(date -j -f '%Y%m%d' "$1" +'%Y%m%d');
echo "$startd";
다음은 성적표입니다.
$ ./testdate.sh 20151010
20151010
20151010
답변2
OS X에서 날짜 형식을 지정하려는 경우 다음을 시도해 볼 수 있습니다.
date -j -f "%Y%m%d" "20151010"
다음과 같은 결과가 나타납니다.
Sat Oct 10 17:27:28 CDT 2015