저는 BASH 및 쉘 스크립팅에 대한 경험이 상당히 부족하므로 양해해 주시기 바랍니다.
$ toda=$(date) | echo $toda
알려주세요: 2020년 5월 29일 금요일 15:25:19 CEST. 여태까지는 그런대로 잘됐다.
datediff는 dateutils 패키지의 일부이며 날짜 사이의 일 수를 반환합니다.
datediff 2019-12-31 2020-05-29
나에게 : 150. 다시 말하지만, 지금까지는 너무 좋았습니다. 하지만:
toda=$(datediff 2019-12-31 2020-05-29) | echo $toda
반환: Fr 29 Mai 2020 15:25:19 CEST 대신 (예상대로) 150. 즉, datediff 결과를 할당하지 않고 이전 작업의 값을 변경하지 않고 그대로 둡니다. 물론 나는 다음을 시도했다.
anothervarname=$(datediff 2019-12-31 2020-05-29) | echo $anothervarname
빈 변수(즉, 프롬프트 위의 빈 줄)를 반환합니다. 위 예제의 datediff 결과를 변수에 할당하려면 어떻게 해야 합니까? 당신의 도움을 주셔서 감사합니다.
답변1
'|'는 한 명령의 출력을 다음 명령으로 리디렉션하는 데 사용됩니다. 귀하의 경우 첫 번째 명령에서는 변수에 값을 할당하기 때문에 출력이 생성되지 않습니다.
당신이 사용해야 하는 것은: (이것을 시도해 보세요)
toda=$(date) && echo "$toda"
&&
-> 후행 명령은 첫 번째 명령이 성공한 경우에만 실행됩니다. AND 연산자.