2016-03-30 157 views
-3

这是我的bash的代码,我想转换成蟒蛇...转换shell脚本Python脚本

IFS='-' read -r -a tests <<<"${test_type}" 
for t in "${tests[@]}"; do 
    test_method="${t#*:}" 
    test="${t%%:*}" 
    case "$test" in 
     tls) 
      test_file="$test"AuthTest.py 
      ;; 
     *) 
      test_file="$test"Test.py 
      ;; 
    esac 

最主要的是,我没能到底是什么理解的代码,这部分正在做:

for t in "${tests[@]}"; do 
    test_method="${t#*:}" 
    test="${t%%:*}" 

什么将test_method的值和测试?

+3

StackOverflow不是一个代码写入服务。你在Python中尝试了什么,以及你在使用该代码时遇到了什么问题? –

+1

你甚至没有提供整个代码。 'test_type'来自哪里,它的格式是什么?而不是逐行转换,最好回到设计中并在Python中再次实现它。语言之间不一定有一对一的命令关系。 – cdarke

+0

test_type只是变量,应该是python中的列表。 –

回答

0

为了解决您更广泛的可行性问题,让我们来看看您的脚本的功能。

基本上你的脚本执行以下操作:

  1. 读取由-分开的一些数据,分裂它。
  2. 循环执行字符串替换的这些行。
  3. 基于这些结果执行一些条件逻辑。

是的,这在Python中都是非常可行的。但请注意,Python没有传统的case结构(它的一个怪癖)。

关于你的“是什么"${t#*:}""${t%%:*}"正在做的”更具体的问题,请阅读此背景:

http://www.tldp.org/LDP/abs/html/string-manipulation.html

"${t#*:}"删除的前一个任意字符最短拉伸“:”
"${t%%:*}"删除'''后的任意字符的最长延伸:

下面是一个愚蠢的例子来说明这一点:

$!/bin/bash 
var='jim:bob:cujo:smith' 
echo ${var#*:} 
echo ${var%%:*} 

结果:

bob:cujo:smith 
jim 

再次,当然这是可以在Python做的,几乎肯定更简洁,但你将不得不学习如何使用Python的正则表达式和内置命令。