2013-03-26 5 views
0

다음과 같이 함수에서 sed 매개 변수를 사용하려고했습니다. 'a'가 발견되면 'a'앞에 #를 입력하고 'a'를 다음 행에 추가하십시오. parama는 paramb과 같은 내용을 가지고 있지만 param이있는 sed 명령이 실패한 이유를 알지 못합니다. 함수에서 반환 된 개행 문자가 잘린 것처럼 보입니까? 오류 메시지는 "sed : -e expression # 1, char 6 : 종결되지 않은`s '명령"함수의 sed 매개 변수는 무엇입니까?

감사합니다.

parama="-e s/a/#&\n&/g" 
echo "a" | sed $parama 


test(){ 
    echo "-e s/a/#&\n&/g" 
} 

paramb=$(test) 

echo "a" | sed $paramb 
+0

예약어이기 때문에 'bash'에 'function'이라는 함수를 정의 할 수 없어야합니다. – chepner

답변

0

난 당신이처럼해야 생각 : 당신은 함수의 이름을 지정하지 않을

parama="-e s/a/#&\n&/g" 
echo "a" | sed $parama 


function test(){ 
    echo "-e s/a/#&\n&/g"; 
} 

paramb=$(test); 

echo "a" | sed $paramb 

을 나는 test.Output로 내가지고있어 그것을 이름을했습니다

$ ./testso2.sh 
#a 
a 
#a 
a 
+0

고마워요,하지만 함수 이름에 문제가있어 함수 이름도 "test"로 실패했습니다. – timchen

+0

@timchen 예상되는 출력은 무엇입니까? –

+0

"function"이라는 단어는 괄호와 조합하여 중복됩니다. – Scrutinizer

0

쉘의 문제처럼 보이지만 내 스크립트는 bash로 잘 실행되지만/bin/sh는 실제로는/bin/sh가 아닙니다. 내 문제가 해결되었습니다. 감사.

0

차이를 재현 할 수 없습니다. echo\n으로 해석 될 수 있습니다. 시도 :

printf "%s\n" "-e s/a/#&\n&/g" 
관련 문제