2014-12-13 2 views
-1

나는 sh의 문서를 사용하여 몇 가지 명령을 실행하고있다. 이제 awk를 사용하여 해당 명령의 출력을 파싱하고 싶습니다. 그러나, 그것을 실행할 때마다 "% No such child process"와 같은 명령을 출력합니다.여기에 문서와 파이프 라인을 동시에 사용하는 것

이것은 내 스크립트의 모양입니다.

#!/bin/sh 
com = "sudo -u username /path/of/file -l" 
$com <<EOF | awk '{print $0}' 
Commands. 
. 
. 
. 
EOF 

원하지 않는 문자열을 추가하지 않고 heredoc과 파이프 라인을 어떻게 사용합니까? 아무 문제가 없습니다 감사

답변

0

귀하의 변수 할당은 몇 가지 방법으로 잘못된 것입니다. 먼저 변수를 실제로 할당하지 않습니다. 인수가 =이고 문자열이 "sudo ..."com이라는 명령을 실행하려고합니다. 공간이 = 양쪽에 사용할 수 없다 :

com="sudo ..." 

둘째, 명령 라인이 변수에 저장되어서는 안된다; 셸의 파서는 매우 간단한 명령을 위해 의도 한대로 작업을 수행 할 수 있습니다. 명령을 전체로 입력하거나 쉘 함수를 사용하십시오.

com() { 
    sudo -u username /path/to/file -l 
} 

com <<EOF | awk '{print $0}' 
... 
EOF 
+0

!!! 감사! :디 – user3714598

0

는 확인 :

$ cat <<EOF | awk '{print $1}' 
a b c 
1 2 3 
EOF 
a 
1 
+0

이상합니다. 왜냐하면 당신이 $ 0을 출력한다면, 출력 끝에 이것과 같은 것을 더하기 때문입니다. "% No such child process 4330" – user3714598

관련 문제