2016-07-01 4 views
0

하나씩 세 개의 스크립트를 실행하려고합니다. 하나는 사용자가 파일을 입력해야합니다. 스크립트는 모두 개별적으로 실행되며, 일부를 & &과 결합하면 작동하지만 모두 결합하려고하면 실패합니다. 그들은 서로 일해야하기 때문에 script1.sh -> script2.sh -> script3.pl으로 가야합니다. 이 개 파일은 .CSV에 실행 .CSV bash에서 여러 스크립트를 하나씩 실행

  • script3.pl 출력 생성
  • script2.sh 요구를 입력해야하고, 필요

    1. script1.sh 사용자에게 입력을 요구하는 입력.

    각각 실행하는 데 오랜 시간이 걸리므로 백그라운드에서 실행되도록하려고합니다. nohup. 다음과 같이 개별적으로 실행됩니다.

    script1.sh file1 file2 
    
    script2.sh > file.csv 
    
    script3.pl --input answer  
    

    echo -n "Question? " 
    read answer 
    nohup script1.sh $1 $2 && script2.sh > file.csv && script3.pl --input $answer & 
    

    그것은 문제와 함께 작동합니다, script2.shscript3.pl,하지만 난 script1.sh했다 때 늘 작동합니다. Script1.shscript2.sh이 결합 되어도 작동하지만 3 가지를 모두 조합하려고합니다.

  • +0

    당신이 저장하려고 했 단일 쉘 스크립트의 모든 3 행은'combined.sh'라고 말한 다음'nohup combined.sh &'로 실행합니다. – Jedi

    +0

    난 여전히 script3.pl –

    +0

    에 입력 된 질문을 할 수 있어야합니다.하지만 당신이 상단에 질문을 할 수있는 것 같아? 왜'read -p '질문을 사용하여 그것을 실행하지 않습니까? " 'nohup combine.sh file1 file2 $ answer &'? – Jedi

    답변

    1

    이 시도 :

    read -p "Question? " answer ; \ 
    nohup script1.sh file1 file2 && \ 
    nohup script2.sh > file.csv  && \ 
    nohup script3.pl --input $answer & 
    
    +0

    위의 명령을 실행하는 셸 자체가 SIGHUP으로부터 보호되지 않는다고 생각합니다. 따라서'script1.sh'는 SIGHUP이 실행되는 동안 로그 아웃하면 멈추지 않을지라도'script2.sh'와'script3.sh'를 실행해야하는 셸은 종료 될 것이므로 실행하지 마십시오. –

    0

    을 나는이 같은 결합 된 스크립트가 필요하다고 생각 - combined로 저장 : 실행할 수있는 그런

    #!/bin/bash 
    script1.sh file1 file2 
    script2.sh > file.csv 
    script3.pl --input "$1" 
    

    :

    nohup ./combined "answer" & 
    
    관련 문제