Linux에서 날짜를 런타임 변수로 얻는 방법

Linux에서 날짜를 런타임 변수로 얻는 방법

다음을 시도했지만 실패했습니다. 날짜 형식을 출력해야 합니다.

--------첫 시도--------

#!/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 YYYYMMDDformat 을 사용하려는 것 같지만 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오늘 날짜 옆에 인쇄하려고 합니까?

$명령의 변수 앞에 다음이 오는 것을 원하지 않습니다 .tempread

#!/bin/bash
echo "read date yyyymmdd"
read temp
echo "${temp} + $(date '+%Y%m%d')"

관련 정보