2013-05-02 4 views
4

다음과 같이 프로그램을 실행하려고합니다.쉘 스크립팅 중에 명령을 찾을 수 없습니다.

./chExt1.sh cpp test.CPP 

Test.cpp에Test.cpp에의 이름을 변경해야하지만, 난이 스크립트는 모든 실행 생각하지 않습니다.
계속 "command not found error"이 표시됩니다.
스크립트는 다음과 같습니다 :

#!/bin/sh 
newExtension=$1; 
oldFile=$2; 

     firstPart=`echo $oldFile | sed 's/\(.*\)\..*/\1/'` 
    newName="$firstPart.$newExtension"; 

#echo $oldFile 
#echo $newName 
mv "$oldFile" "$newName" 
#echo "$oldFile" 
#echo "$firstPart" 
#echo "$newName" 
+0

우분투 12.0에서는 저에게 도움이되고 있습니다. 당신의'echo'는 어떨까요? 주석 처리를하지 않으면 적절한 데이터를 보여줄 수 있습니까? – fedorqui

+0

Fuduntu 2013.2에서 근무했습니다. 'sed'가 설치되어 있습니까? 어떤 리눅스 OS를 사용하고 있습니까? –

+0

+ x에 chmodded? –

답변

1

귀하의 의견을 바탕으로, 여분의 제어 문자를 제거 vi에서이 작업을 수행. gedit에서 파일을 편집 할 때 또는 Windows에서 편집 한 다음 Unix/Linux 컴퓨터에서 사용할 때이 문제가 발생했습니다.

사용, vi의 모든 행의 끝에서 ^M 문자를 제거하려면 다음

:%s/^V^M//g 

^vV 성격과 ^mCtrl 키M하는 Ctrl 키입니다. 당신이 입력하면 다음과 같이 표시됩니다

:%s/^M//g 

UNIX, 당신은 Ctrl 키V와 함께 선행에 의해 제어 문자를 탈출 할 수 있습니다. :%s은 vi에서 기본 검색 및 바꾸기 명령입니다. vi은 첫 번째와 두 번째 슬래시 (^M) 사이의 정규 표현식을 두 번째와 세 번째 슬래시 사이의 텍스트 (이 경우는 아무 것도 없음)로 바꿉니다. 끝 부분의 gvi에게 전체적으로 검색하고 대체하도록 지시합니다 (모두 발생).

Source

+0

이에 해당하는 emacs가 있습니까? 나는이 학기에 vi를 배울 필요가 없었으므로 어떻게 사용하는지 전혀 모른다. – DiamonW

+0

'vi'를 모르는 경우 명령 행에'vi filename'을 입력하고 표시된대로 (콜론과 모든 것) 명령을 입력하십시오. 그런 다음 저장하려면 'SHIFT + Z + Z'를 입력하십시오 (+ 부호를 누르지 마십시오). 또는': wq! '를 입력 할 수도 있습니다. –

+0

emacs에 대한 다음 질문을 참조하십시오 : http://stackoverflow.com/questions/1171609/in-emacs-how-to-strip-cr-m-and-leave-lf- j- 문자 –

2

나는 마지막으로 문제를 해결. 스크립트를 포함하는 텍스트 파일을 FTP로 전송 한 다음 Linux의 .sh 파일로 전송했을 때 무언가 잘못되었습니다. 나는 이맥에서 처음부터 썼다. 그리고 그것은 모든 것을 깨끗하게했다.

관련 문제