2017-01-05 102 views
0

一個Python子我有一個bash腳本的週期叫test.sh與運行bash腳本週期背景

#!/bin/sh 
echo -n > "/path/output.txt" 
for i in {1..10} 
do 
echo "Test" >> "/path/output.txt" 
done 

我想在同時的Python指令後臺運行腳本被執行。 我使用Python subprocess

import subprocess 
subprocess.Popen('test.sh') 

我不能讓任何輸出或輸出被寫在「output.txt的」只有一次。

+0

你的她,爆炸是錯誤的,它應該是'#!/ bin/sh' – Inian

+0

你可能也想'echo -n「」'或者其他什麼東西,除非你想要一個寫入該文件的文字'-n'。如果您只想創建該文件,請嘗試「觸摸」。 – meatspace

+0

@meatspace如果我使用觸摸我不能覆蓋文件,如果它已經存在 –

回答

2

一般情況下,不要在循環中使用大括號擴展。在你迭代它之前,shell必須擴展整個表達式。無論是使用C風格for環(在炮彈像bash支持它):

for ((i=1; i<=10; i++)); do 
    ... 
done 

或使用while循環(在任何POSIX兼容的shell):

i=1 
while [ "$i" -le 10 ]; do 
    ... 
    i=$((i+1)) 
done 
+0

對不起:while [$ i -le 10] do i = $(($ i + 1))。好吧,我猜他們都是嚴格的 –

+0

參數只能是算術上下文中的整數,所以標識符會自動解除引用。 – chepner

0
for i in {1..10} 

對於sh是無效語法。你用Bash標記了你的問題,所以用第一行代替

#!/bin/bash