繁体   English   中英

在bash脚本中嵌入python

[英]embed python in bash script

我是python的新手,正试图将其嵌入bash脚本中。 我有以下bash shell脚本:

#!/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

我想执行此百分比存储在调用python的变量中的计算

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

括号给您带来麻烦,因此当我运行bash脚本时,我得到以下输出:

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

bash出问题了吗? 据我所知,操作顺序在python中用括号定义。

谢谢,

bash会解释(当您不希望它时。您需要将要发送给python的表达式括在引号中。

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

如果您好奇bash 认为您在做什么...

构造(...)表示要在子Shell中运行的内容。 首先,bash将对变量$WCNO$WCNF 然后,它将尝试在子外壳中作为命令在Paren中运行事物。 除非该字符串作为命令同时存在,否则bash会抱怨,因为它试图查找的命令不存在。

另请参见Unix.SE上的此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM