python可以取代shell吗_在BASH脚本中使用Python的替代方法

在shell本身没有实现浮点运算的便携方法。你需要求助于外部项目。在

您可以使用AWK代替Python,它的upstart开销明显更小。注意,它不理解Python奇特的x < y < z语法,因此您必须将其重写为x < y && y < z。你可以定义这个小Bash函数。在## usage: is_between VALUE UPPER LOWER

##

## Checks whether VALUE is truly between UPPER and LOWER.

##

function is_between {

awk "BEGIN { exit(!($2 < $1 && $1 < $3)); }"

}

它将通过退出状态返回答案,以便可以直接在条件内使用。例如:

^{pr2}$

我写了一个小基准。请注意,我实际上是在比较整数,而不是实数,因此我可以与shell内置函数进行比较。在#!/bin/sh -eu

what=

if [ ${#} -gt 0 ]

then

what=$1

fi

case $what in

awk)

function is_between {

awk "BEGIN { exit(!($2 < $1 && $1 < $3)); }"

}

;;

python)

function is_between {

python -c "import sys; sys.exit(not ($2 < $1 < $3));"

}

;;

*)

# This one only works for integers!

function is_between {

return $((!($2 < $1 && $1 < $3)))

}

;;

esac

i=0

count=0

while [ $i -lt 1000 ]

do

value="$RANDOM"

lower="$RANDOM"

upper="$RANDOM"

if is_between $value $lower $upper

then

count=$(($count + 1))

fi

i=$(($i + 1))

done

echo "$count values were in between"

以下是我的计时结果:$ time ./test.sh

152 values were in between

real 0m0.055s

user 0m0.053s

sys 0m0.000s

$ time ./test.sh python

146 values were in between

real 0m33.354s

user 0m27.570s

sys 0m4.047s

$ time ./test.sh awk

157 values were in between

real 0m5.486s

user 0m3.503s

sys 0m0.723s

正如你所看到的,差异是非常显著的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值