2014-10-29 2 views
0

셸 스크립트에서 작성 중입니다. 다른 파일에서 파일 이름을 읽고, 인용 부호를 제거하고 파일 확장자를 추가하고 싶습니다.인용 부호를 제거하고 셸 스크립트 파일 이름에 파일 확장자를 추가하십시오.

tmp=$(awk '/output_onefile/ {getline;print}' $cmds_file) 
tmp=$(echo "$tmp" | tr -d '"') 
uh3dsr_file="${tmp}.sr_uh3d" 

$ cmds_file 뒤에있는 파일에는 "output_onefile"다음 줄에 파일 이름이 있습니다. 파일 이름은 따옴표로 묶어서 두 번째 줄에서 제거합니다. 이것까지는 모든 것이 잘 작동합니다. 그러면 파일 이름에 .sr_uh3d를 추가하기 만하면됩니다.

echo "$uh3dsr_file" 
.sr_uh3d23456 
echo "Text $uh3dsr_file" 
.sr_uh3dbla_123456 

그것은 나머지 앞에 .sr_uh3d 퍼팅하고 overwritting :이 같은 코드를 실행의 말을하게하는 경우

는, 파일 이름, 나는 다음과 같이 결국 "Blabla_123456"

입니다 나머지의 시작.

아무에게도 그 행동을 설명 할 수 있습니까? 내가 뭘하려고하는지 분명하지?

+0

입력 파일의 샘플을 추가 할 수 있습니까? –

+0

아마 이렇게하는 것이 더 간단 할 것입니다 :'uh3dsr_file = echo $ tmp ".sr_uh3d" – 4rlekin

답변

1

텍스트 파일에 CRLF 줄 끝이 있지만 도구에 LF 줄 끝이 있어야합니다. 미리 dos2unix을 사용하거나 tr 또는 매개 변수 대체를 사용하여 텍스트에서 CR을 제거하십시오.

+0

Thx, 네 말이 맞아. 동일한 스크립트에서 나중에 dos2unix를 사용하고 있지만 결코 그것에 대해 생각하지 마십시오. –

관련 문제