
다음을 시도했지만 실패했습니다. 날짜 형식을 출력해야 합니다.
--------첫 시도--------
#!/bin/bash
echo "read date yyyymmdd"
read $temp
dd=$(date -j -f '%Y%m%d' "$temp" +'%Y%m%d')
echo $dd
산출:invalid option -- 'j'
--------두 번째 시도-------
#!/bin/bash
echo "read date yyyymmdd"
read $temp
dd=$(date -d "$temp" +'%Y%m%d')
echo $dd
출력: 오늘 날짜를 인쇄하세요.
답변1
주요 문제는 입니다 read $temp
. 변수로 무엇인가를 읽으려면 접두사를 사용하지 마십시오 $
(변수의 값에 액세스하게 됩니다).
read temp
date
두 번째 문제는 사용 중인 명령이 어떻게 구현되는지 모르는 것 같다는 것입니다 . GNU에는 플래그 date
가 없습니다 -j
. 그러나 이 플래그는 다른 구현에서 사용될 수 있습니다 date
(예: BSD 시스템에서는 유틸리티가 지정된 날짜 스탬프를 구문 분석하여 출력하지만놓다날짜).
$temp
세 번째 문제는 Convert to YYYYMMDD
format 을 사용하려는 것 같지만 date
이미 사용자에게 이 형식으로 날짜를 입력하도록 요청하고 있으므로 변환이 작동하지 않는다는 것입니다.
스크립트의 수정된 버전(GNU용으로 작성됨) date
및 수행하려는 작업이 명확하지 않기 때문에 세 번째 질문에 대해서는 아무 작업도 수행하지 않습니다.실제로하고 싶다):
#!/bin/bash
read -p 'Enter date (YYYYMMDD): ' indate
date -d "$indate" +'%Y%m%d'
만약에모두당신이 원하는 것은 날짜를 변수에 넣은 다음 출력하는 것뿐입니다. 그러면 사용자에게 날짜를 물어볼 이유가 없습니다.
#!/bin/sh
thedate=$( date +'%Y%m%d' )
printf 'The date is %s\n' "$thedate"
또는 나중에 사용하기 위해 변수에 저장할 필요가 없는 경우
#!/bin/sh
date +'The date is %Y%m%d'
답변2
그렇다면 변수에 대한 일부 입력을 읽어서 $temp
오늘 날짜 옆에 인쇄하려고 합니까?
$
명령의 변수 앞에 다음이 오는 것을 원하지 않습니다 .temp
read
#!/bin/bash
echo "read date yyyymmdd"
read temp
echo "${temp} + $(date '+%Y%m%d')"