2017-09-25 7 views
1

내가 스크립트 내에서이 명령을 넣어은 diff 명령은

diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort) 

를 실행하려고 bash 쉘 스크립트 내부에서 작업하지, 그것은 오류를

syntax error near unexpected token `(' " 

을 보여줍니다하지만 내부에 넣어하지 않는 경우 쉘보다는 쉘 스크립트를 직접 실행하십시오.

+1

표시 오두막 어떻게 할이 스크립트를 실행 프로세스 대체에 필요한 posix 모드 사이를 플립 다음 명령을 사용합니다. – Cyrus

답변

1

아마도 스크립트는 이 아닌 /bin/sh으로 실행되지만 명령 대체는 bash 기능이며 sh에는 구현되어 있지 않습니다. 그래서 당신이 명령 줄에서 작동하는 이유는 당신의 껍질로 bash를 사용하는 가정합니다.

시도 스크립트에이 접두사를 추가, 제거 기존 shebangs (같은 #!/bin/sh 또는 유사한) :

#!/bin/bash 
1

당신은 시도해야 두 가지 작업 다음

  1. 당신의 오두막으로 사용 #!/bin/bash (스크립트의 첫 번째 줄) 을 기반으로해야 할 수도 있습니다. 도움이 안돼.

    set +o posix 
    diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort) 
    set -o posix 
    

    예 : 스크립트의

    wc -l <(ls -lrt) 
    sh: syntax error near unexpected token `(' 
    
    set +o posix 
    wc -l <(ls -lrt) 
    114 /dev/fd/00 
    
    set -o posix 
    wc -l <(ls -lrt) 
    sh: syntax error near unexpected token `('