입력 매개변수를 가져와 최신 날짜로 전달

입력 매개변수를 가져와 최신 날짜로 전달

그래서 다음과 같은 입력을 얻기 위해 쉘 스크립트를 작성해 보았습니다.

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'

관련 정보