![입력 매개변수를 가져와 최신 날짜로 전달](https://linux55.com/image/107757/%EC%9E%85%EB%A0%A5%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%99%80%20%EC%B5%9C%EC%8B%A0%20%EB%82%A0%EC%A7%9C%EB%A1%9C%20%EC%A0%84%EB%8B%AC.png)
그래서 다음과 같은 입력을 얻기 위해 쉘 스크립트를 작성해 보았습니다.
bash whichday Jan 10 2017
해당 입력을 가져와서 발생한 날짜를 인쇄해야 합니다. 다음은 내가 사용하려는 스크립트입니다.
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Please enter the month day year (example: Jan 5 2002)"
else
str=\"$1" "$2" "$3\"
echo $str
date -d $str +%A
fi
하지만 이것을 실행할 때마다 다음과 같은 결과가 나타납니다.
"Jan 10 2017"
date: extra operand ‘2017"’
Try 'date --help' for more information.
내가 할 때
date -d "Jan 10 2017" +"%A"
명령줄에서는 올바른 날짜(화요일)를 출력하지만 정확히 동일한 명령을 실행하도록 되어 있는 스크립트가 작동하지 않습니다. 도와주세요. 왜 이런 일이 발생하는지 이해할 수 없습니다.
답변1
그냥 설정
str="$1 $2 $3"
그런 다음
date -d "$str" +'%A'
큰따옴표를 이스케이프하면 이를 value 의 일부로 갖게 되며 $str
구문 date
분석할 수 없습니다.
str
다음을 사용하여 변수를 완전히 무시할 수도 있습니다 $*
.
echo "$*"
date -d "$*" +'%A'