![Bash에서 공백이 있는 문자열을 전체적으로 처리하는 방법은 무엇입니까? [복사]](https://linux55.com/image/58394/Bash%EC%97%90%EC%84%9C%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%A0%84%EC%B2%B4%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
error_occurr 시간으로 레이블이 지정된 빈 파일을 생성하는 오류 처리기를 만들고 싶습니다.
핵심 아이디어는 date
명령의 결과를 매개변수로 사용하는 것입니다.
나는 그랬다:
time_stamp=$(date)
touch $time_stamp
2014
그러나 이로 인해 , Wed
, 와 같은 일련의 빈 파일이 생성됩니다 11:15:20
.
여기서 time_stamp를 전체 문자열로 변환하는 방법은 무엇입니까?
답변1
cuonglm의 답변은 일반적으로 공백이 있는 파일을 만드는 문제를 해결하지만 문제는 date
.
파일 이름의 일부로 날짜 또는 날짜/시간 문자열을 사용하려면 항상 이 --rfc-3339
옵션(최근 GNU 시스템의 경우) 또는 적절한 형식 문자열을 사용해야 합니다. 그러면 논리적인 방식으로 정렬할 수 있는 파일 이름이 제공됩니다. 이 옵션은 원하는 파일 이름 정밀도에 따라 --rfc-3339
하나의 인수를 사용하거나 사용합니다 .seconds
ns
date
time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"
공백 없이 특정 문자열을 얻을 수도 있고 필요한 정보만 얻을 수도 있습니다 date +FORMAT
( man date
자세한 내용은).
time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"
20141029-0944
공백 없이 비슷한 이름의 파일을 제공 하고 인용이 필요하지 않다는 착각을 불러일으킬 것입니다. 하지만 넌 여전히 전화할 테니까 이렇게 하는 거야분할+전역$IFS
기본값이 변경된 컨텍스트에서 사용되는 경우 이 연산자는 실제로 분할될 수 있습니다.
답변2
변수를 큰따옴표로 묶어야 합니다.
time_stamp="$(date)"
touch "$time_stamp"
이 경우 큰따옴표는 "$(date)"
필수는 아니지만 그렇게 하는 것이 좋습니다. 당신은 읽을 수있다이것더 많은 이해를 위해.