2017-01-15 7 views
0

저는 파이썬을 처음 접했고 bash 스크립트에 임베드하려고합니다.파이썬을 bash 스크립트에 임베드

#!/bin/bash 

while read line 
do 
    ORD=`echo $line | cut -c 1-7` 
    if [[ -r ../FASTA_SEC/COMBI_RAW/${ORD}_COMBI_RAW.fa ]] 
    then 
     touch ../Results/Log_Files/Log_${ORD}.txt 
     for ((win = 2; win < 20; win += 2)); do 
      printf 'The value of win is %d, now entereing inner loop\n' "$win" 
      for ((per = 50; per < 100; per += 2)); do 
       printf 'Value of per is %d\n' "$per" 
       WCNO=`grep -o "n\|N" ../FASTA_SEC/COMBI_RAW/${ORD}_COMBI_RAW.fa | wc -l` 
       WCNF=`grep -o "n\|N" ../Results/COMBI/${ORD}_COMBI/${ORD}_w${win}_p${per}_COMBI.fa | wc -l` 
       WCAO=`grep -o "a\|A\|g\|G\|t\|T\|c\|C" ../FASTA_SEC/COMBI_RAW/${ORD}_COMBI_RAW.fa | wc -l` 
       WCAF=`grep -o "a\|A\|g\|G\|t\|T\|c\|C" ../Results/COMBI/${ORD}_COMBI/${ORD}_w${win}_p${per}_COMBI.fa | wc -l` 
       PERN=`echo print ($WCNO-$WCNF)/$WCNO. | python` 
       echo $ORD $PERN 
      done 
     done 
    else 
     echo ${ORD}"_COMBI_RAW.fa does not exist" 
    fi 
done < ./Data_ORD.txt 

나는 내가 다음과 같은 출력을 얻을 수 있도록

PERN=`echo print ($WCNO-$WCNF)/$WCNO. | python` 
이 괄호 문제를주고있다

내가 실행 변수 호출 파이썬에 저장이 비율 계산을 수행하고 싶습니다 : 나는 다음과 같은 bash 쉘 스크립트를 bash 스크립트 :

command substitution: line 17: syntax error near unexpected token `(' 
command substitution: line 17: `echo print ($WCNO-$WCNF)/$WCNO. | python' 

bash에 문제가 있습니까? 작업 순서는 내가 아는 한 파이썬에서 괄호로 정의됩니다.

당신이 그것을 원하지 않을 경우

답변

1

배쉬는 ( 해석, 감사합니다. Python으로 보내는 식을 따옴표로 묶어야합니다.

PERN=`echo "print ($WCNO-$WCNF)/$WCNO." | python` 

당신이 뭘하고 있었을 생각했던 bash는 궁금하다면 ...

구축물 (...)는 서브 쉘 내에서 실행하는 것을 나타냅니다. 첫째, bash는 변수 $WCNO$WCNF을 보간합니다. 그런 다음 서브 셸에서 명령으로 괄호 안에있는 것을 실행하려고합니다. 이 문자열이 동시에 명령으로 존재하지 않으면 bash는 찾을 명령이 존재하지 않기 때문에 불평 할 것입니다.

Unix.SE의 this answer도 참조하십시오.

+0

감사합니다. 좋은 설명 – Neuls