다음 date
과 같이 멋진 형식으로 명령 을 만들고 싶습니다.
$ date +"%Y-%m-%d %H:%M:%S"
2015-09-17 16:51:58
그러나 이것을 변수에 저장하고 싶기 때문에 다음과 같이 스크립트에서 호출 할 수 있습니다.
echo "$(nice_date) [WARNING] etc etc"
그러나 그것은 작동하지 않습니다
$ nice_date="date +%Y-%m-%d %H:%M:%S"
$ echo "$($nice_date)"
date: extra operand ‘%H:%M:%S’
Try 'date --help' for more information.
$ nice_date="date +\"%Y-%m-%d %H:%M:%S\""
$ echo "$($nice_date)"
date: extra operand ‘%H:%M:%S"’
Try 'date --help' for more information.
$ nice_date='date +"%Y-%m-%d %H:%M:%S"'
$ echo "$($nice_date)"
date: extra operand ‘%H:%M:%S"’
Try 'date --help' for more information.
date 명령이 올바른 인수를 얻도록 올바른 방법은 무엇입니까?
답변
예제가 실패하는 이유는 쉘의 단어 분할이 작동하는 방식 때문입니다. 당신이 실행하면 "$($nice_date)"
, 쉘은 실행되는 date
두 개의 인수 명령을 "+%Y-%m-%d"
하고 "%H:%M:%S"
. date의 형식 문자열이 단일 인수 여야하므로 실패합니다.
이를 수행하는 가장 좋은 방법은 명령을 변수에 저장하는 대신 함수를 사용하는 것입니다.
format_date() {
# echo is not needed
date "+%Y-%m-%d %H:%M:%S" "$1"
}
format_date
format_date "2015-09-17 16:51:58"
echo "$(format_date) [WARNING] etc etc"
명령을 변수에 실제로 저장하려면 배열을 사용할 수 있습니다.
nice_date=(date "+%Y-%m-%d %H:%M:%S")
# again echo not needed
"${nice_date[@]}" "2015-09-17 16:51:58"
변수에 명령을 저장하는 복잡한 경우에 대한 자세한 내용은 BashFAQ 050을 참조하십시오 .
답변
기능이 최선의 방법이라는 데 동의합니다. 대안으로 간단히 형식을 전체 명령이 아닌 변수로 저장하십시오.
$ nice_date='+%Y-%m-%d %H:%M:%S'
$ echo "$(date "$nice_date") [WARNING] etc etc"
답변
가장 짧은 대답은
#if you want to store in a variable
now=$(date '+%F" "%T');
echo $now
#or direct output (single quote may not needed)
date '+%F" "%T'
답변
한 가지 쉬운 방법은 \로 공간을 ‘탈출’하는 것입니다.
nice_date="date +%Y-%m-%d\ %H:%M:%S"
답변
아래를 시도하십시오 :
키보드의 물결표 키에있는 기호 “`”를 추가해야합니다. 이 기호는 쉘이 명령을 먼저 실행 한 다음 변수에 할당하도록 지시합니다.
[root@RHEL01 ~]# My_Var=`date +"%Y-%m-%d %H:%M:%S"`
[root@RHEL01 ~]# echo $My_Var
2015-09-17 10:05:30
[root@RHEL01 ~]#
답변
대신에:
nice_date="date +%Y-%m-%d %H:%M:%S"
echo "$($nice_date)"
시험:
nice_date_format="+%Y-%m-%d %H:%M:%S"
echo $(date "$nice_date_format")
또한 마지막 명령 대체가 필요하지 않습니다.
date "$nice_date_format"
답변
같은 문제가 있었다; splunk로 처리하기 위해 awk 인쇄에 날짜를 넣어야했습니다. 나는 사용했다
DATE1=`date +%Y-%m-%d`
DATE2=`date +%T`
그때
awk ' { print "['$DATE1' '$DATE2'] topic=" $1, etc