Bash에서 공백이 있는 문자열을 전체적으로 처리하는 방법은 무엇입니까? [복사]

Bash에서 공백이 있는 문자열을 전체적으로 처리하는 방법은 무엇입니까? [복사]

error_occurr 시간으로 레이블이 지정된 빈 파일을 생성하는 오류 처리기를 만들고 싶습니다.

핵심 아이디어는 date명령의 결과를 매개변수로 사용하는 것입니다.

나는 그랬다:

time_stamp=$(date)
touch $time_stamp

2014그러나 이로 인해 , Wed, 와 같은 일련의 빈 파일이 생성됩니다 11:15:20.

여기서 time_stamp를 전체 문자열로 변환하는 방법은 무엇입니까?

답변1

cuonglm의 답변은 일반적으로 공백이 있는 파일을 만드는 문제를 해결하지만 문제는 date.

파일 이름의 일부로 날짜 또는 날짜/시간 문자열을 사용하려면 항상 이 --rfc-3339옵션(최근 GNU 시스템의 경우) 또는 적절한 형식 문자열을 사용해야 합니다. 그러면 논리적인 방식으로 정렬할 수 있는 파일 이름이 제공됩니다. 이 옵션은 원하는 파일 이름 정밀도에 따라 --rfc-3339하나의 인수를 사용하거나 사용합니다 .secondsnsdate

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)"필수는 아니지만 그렇게 하는 것이 좋습니다. 당신은 읽을 수있다이것더 많은 이해를 위해.

관련 정보