2016-06-01 2 views
1

var (날짜)와 문자열을 연결하여 현재 날짜가있는 파일을 만들려고합니다.Concat 변수 (날짜) 및 문자열 in shell unix - bash

내 코드.

days="$(date +"%Y%m%d_%H%M")" 
echo "SKIP" > ${days}_EMERGENCY.txt 

하지만 실행하면 파일이 생깁니 까? 이 같은 파일 이름에 :

enter image description here

오전 내가 뭔가 잘못하고?

편집

, 기호를 찾고 계십니까? \ r에 대한 약자 - 내가 메모장에 쓰고 FTP로 .sh 스크립트를 업로드했기 때문일 수 있습니까? 2

편집은 로컬 컴퓨터에서 VI와 시도 - 지금은 더 나쁘다. enter image description here

+0

제 생각으로는 너비가 0 인 표기 또는 문자가 미끄러질 수 있습니다. 아래의 내 의견에 제안 된대로 시도해보십시오. – Dilettant

+0

GNU-bash이고 유닉스인가? – sjsam

+0

@sjsam yes Linux의 GNU-bash –

답변

4

나는 당신의 VI가 전체 파일을 DOS 스타일을 한 것이고, 그래서 에코 문

해보십시오 DOS2UNIX의 끝 또는 변경할 수있는 편집기를 사용하여 또 다른 캐리지 리턴이있을 것 같아요 줄 끝 스타일 또는

sed -i "s/$(printf '\015')//g" yourscript 
+0

여기 있습니다! 그게 문제 였어! –

+1

때로는 끝 문장에 세미콜론을 추가하는 것이 불안정한 편집 환경에 대한 빠른 수정입니다 .-) – Dilettant

+1

@Dilettant, 좋은 제안이지만 "일반적으로"셸 프로그래머는 세미콜론을 사용하지 않고 불완전 (연속) 문을 포함하는 줄이 스크립트에있을 수 있습니다 그것은 또한 stray CR에 문제를 일으킬 것입니다. 보통은/bin/bash^M을 사용하여 시도한대로 'interpreter not found'로 시작한다고 생각합니다. –

0

내 시스템 (OS X)에서도 큰 따옴표를 사용하여 작동합니다. 편차를 위해 :

$> days="$(date +'%Y%m%d_%H%M')" 
$> echo $days 
20160601_1051 
$> echo "SKIP" > ${days}_EMERGENCY.txt 
$> ll ${days}_EMERGENCY.txt 
-rw-r--r-- 1 user team 5 Jun 1 10:52 20160601_1051_EMERGENCY.txt 
+0

아무 것도. 같은 문제. –

+0

내가 한 것처럼 시도하십시오. 에코 출력과 파일 목록을 추가했습니다. 나에게 좋아 보인다. – Dilettant

+0

예. 나는 아무 것도 잘못이 아니라 내 발췌 문장에서도 확신하지만 출력은 여전히있다. –

0

첫 번째 변수 할당에서 여분의 큰 따옴표를 제거하려고합니다.

$ days=$(date +%Y%m%d_%H%M) 
$ echo $days #see what output will get? 
$ echo "SKIP" > ${days}_EMERGENCY.txt