2009-12-29 4 views
1

/! 빈/SH

if [ "`echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d'`" != "OK" ]; then 
     echo "howdy dody" 
    fi 

echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d' 

조건이있는 경우 실행되지 않습니다, 메신저가 있기 때문에 부적절한 인용으로 추측하고,하지만 난 그것을 알아낼 수 없습니다 먼저 .Bourne 쉘 따옴표, doublequote 및 역 인용 부호 질문

미리 도움을 청하십시오.

+0

을 얻게되면 있어야 $ 내림차순 및 $ 상태가 무엇입니까?를 명령을 더 단순화 할 수 있습니다 !! – ghostdog74

+0

아마도 그렇게 할 수는 있지만 문제는 아닙니다. – Anders

+0

그래서 $ desc 및 $ status는 무엇입니까? – ghostdog74

답변

0

Bash를 사용하는 경우 역 인용 부호 대신 $(...)을 권하고 싶습니다. 어떤 오류 메시지가 나타 납니까? 내 생각 엔 awk에 -F"," 옵션이 제대로 인용되지 않는 것입니다. \을 삽입하면 따옴표를 이스케이프 처리합니다. 당신은 또한 당신과 -F 옵션 인수를 큰 따옴표를 사용할 수 있습니다

if [ "`echo $desc $status | awk -F"," '{print $3}' | awk -F" " '{print $1}' | sed '/^$/d'`" != "OK" ]; then 
     echo "howdy dody" 
    fi 

if [ "`echo $desc $status | awk -F\",\" '{print $3}' | awk -F\" \" '{print $1}' | sed '/^$/d'`" != "OK" ]; then 
     echo "howdy doody" 
    fi 
+0

죄송합니다. $ (...) 매우 오래된 셸을 사용할 수 없습니다. MMm, 좋은 제안이야. – Anders

+1

$()을 사용할 수 없습니까? 그럼 bash 태그는 왜? – ghostdog74

+0

주제가 변경되었습니다. – Anders

0

, 당신은 큰 따옴표의 일부를 탈출 시도 할 수도 있습니다 다른 인수를 가지고 :

if [ "`echo $desc $status | awk -F',' '{print $3}' | awk -F' ' '{print $1}' | sed '/^$/d'`" != "OK" ]; then 
+0

도움에 감사드립니다. – Anders

1

에 :

언뜻
0

큰 따옴표를 이스케이프합니다. 정말 좋은 생각이지만, $ 3과 $ 1은 awk에 의해 해석되도록 의도 된 것 같습니다. 대신 쉘에 의해 해석됩니다. 아마도 '$'를 탈출하고 싶을 것입니다. (당신이 $ 1 셸에서 $ 3하지만 가능성에 대한 의미있는 값을 가질 가능성이 있습니다.) 당신이 함수에 포장하는 경우

+0

아니요, 작은 따옴표로 묶어서 탈출 할 필요가 없습니다. –

+0

서브 셸에서 파이프 라인을 실행하는 backticks (이 셸이 어떤 쉘인지 모르기 때문에) "내부"큰 따옴표는 "외부"큰 따옴표로 영향을받지 않습니다. –

1

당신의 테스트를 작성하는 것이 훨씬 더 쉽다 :

mytest() 
{ 
    echo "$1 $2" \ 
    | awk -F"," -v arg3="$3" '{print arg3}' \ 
    | awk -F" " -v arg1="$1" '{print arg1}' \ 
    | sed '/^$/d' 
} 

이를 그런데 제대로 작동하는지 확인할 수 있습니다. 이 자신감

if [ "$(mytest "$desc" "$status")" != "OK" ]; then 
     echo "howdy doody" 
fi 

또는

if mytest "$desc" "$status" | grep -q -v '^OK$'; then 
    echo "howdy doody" 
fi 
+0

또한 $ desc 및 $ status를 다음과 같이 전달할 수 있습니다. 매개 변수를 함수 –

+0

좋은 지적으로, 나는 제안 된대로 함수를 일반화했다. (내 게으름이 눈치 채지 못하게 되길 기대했다.) –

+2

아무도 스페인 종교 재판을 기대하지 않는다! –