python - 在 bash 脚本中嵌入 python

标签 python linux bash embed

我是 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。然后它会尝试在子 shell 中将括号中的东西作为命令运行。除非该字符串恰好作为命令存在,否则 bash 会报错,因为它试图找到的命令不存在。

另见 this answer在 Unix.SE 上。

关于python - 在 bash 脚本中嵌入 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41664332/

相关文章:

python - sqlalchemy:使用装饰器为多个函数提供线程安全 session

python - 在 Mac 上查找文件的目录地址

python - 通过 Python 和 MySQL 使用参数化查询

linux - 在 LAMP 堆栈中重命名本地主机 127.0.0.1

c - APUE.H Linux C 编程错误

python - 按列任意排序矩阵

c - 将shell命令的结果存储在C中的变量中

linux - 如何确定输入来自哪个键盘

perl - 如何将许多文件 url 转义 (%XX) 重命名为人类可读形式

python - 在 bash 中生成多个 python 脚本