그래서 다음과 같은 입력을 얻기 위해 쉘 스크립트를 작성해 보았습니다.
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'