2016-03-30 198 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的正則表達式和內置命令。