1. 程式人生 > >python 如何呼叫帶引數的shell指令碼

python 如何呼叫帶引數的shell指令碼

舉例: shell的指令碼: t.sh內容: echo "this is a test shell with arguments" echo "arg1 = $1; arg2 = $2;" 執行指令碼./t.sh zhao 結果如下:
[[email protected] knockdown_workflow]$ ./t.sh zhao1 zhao2
this is a test shell with arguments
arg1 = zhao1; arg2 = zhao2;


python指令碼:
[[email protected] knockdown_workflow]$ cat t.py 
#!/usr/bin/env python
import os
import sys


def main():


print 'Hello world!'
if len(sys.argv) < 2 :
     print "usage:%s config log" %(sys.argv[0])
     sys.exit(1)
arg0 = sys.argv[0]
arg1 = sys.argv[1]


print "arg0 = %s; arg1 = %s" % (arg0, arg1) 


print "test ./t.sh: "
os.system('./t.sh ' + arg0 + ' ' + arg1)


print "test method of replacing: "
t = 't.sh'
m = 'zhao'
n = 'zhao'
cmd = "./%s %s %s" % (t,m,n)
print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)
os.system(cmd)


if __name__ == '__main__':
main()


執行指令碼:python t.py t.sh 執行結果:
[[email protected] knockdown_workflow]$ python t.py t.sh
Hello world!
arg0 = t.py; arg1 = t.sh
test ./t.sh: 
this is a test shell with arguments
arg1 = t.py; arg2 = t.sh;
test method of replacing: 
t = t.sh; m = zhao; n = zhao; cmd = ./t.sh zhao zhao
this is a test shell with arguments
arg1 = zhao; arg2 = zhao;
[
[email protected]
knockdown_workflow]$ cat t.sh echo "this is a test shell with arguments" echo "arg1 = $1; arg2 = $2;" [[email protected] knockdown_workflow]$ ./t.sh zhao1 zhao2 this is a test shell with arguments arg1 = zhao1; arg2 = zhao2;


說明: 兩種方法使用python指令碼呼叫shell指令碼: 第一種方法:
os.system('./t.sh ' + arg0 + ' ' + arg1)

注:./t.sh後面有一個空格,不同的 第二種方法:
t = 't.sh'
m = 'zhao'
n = 'zhao'
cmd = "./%s %s %s" % (t,m,n)
print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)
os.system(cmd)

注:在之前把字串聚合到一起。 其中連線字串還可以使用這個方法:    
     t = 't.sh'
m = 'zhao'
n = 'zhao'
        cmd1 = os.path.join("./", t, ' ', m, ' ', n)
        print "cmd1 = %s" % cmd1

os.system('./t.sh ' + arg1)
        print "replace:"
        t = 't.sh'
        m = 'zhao'
        cmd = "./%s %s" % (t,m)
        print "t = %s; m = %s; cmd = %s" % (t,m,cmd)
        os.system(cmd)

相關推薦

python 如何呼叫引數shell指令碼

舉例: shell的指令碼: t.sh內容: echo "this is a test shell with arguments" echo "arg1 = $1; arg2 = $2;" 執行指令碼./t.sh zhao 結果如下: [[email 

python引數的裝飾器

from functools import wraps def logit(logfile='out.log'): def logging_decorator(func): @wraps(func) def wrapped_function(*

C#呼叫引數的儲存過程

注:我使用的資料庫為SQL2005,先看下我的儲存過程; create procedure spAddRenter@name varchar(20),@contact varchar(100),@contractID char(18),@renterRental money

Shell 指令碼呼叫另一個 Shell 指令碼的三種方式

先來說一下主要以下有幾種方式: fork: 如果指令碼有執行許可權的話,path/to/foo.sh。如果沒有,sh path/to/foo.sh。 exec: exec path/to/foo.sh source: source path/to/foo.s

Python執行引數的外部程式

用python的subprocess模組的popen類執行新的外部程式,可以帶引數程式碼如下: #encoding=utf-8 import subprocess sh=r'F:\program fi

Shell 指令碼呼叫另一個 Shell 指令碼的三種方式以及返回值問題

指令碼呼叫: 先來說一下主要以下有幾種方式: fork: 如果指令碼有執行許可權的話,path/to/foo.sh。如果沒有,sh path/to/foo.sh。新開啟子shell,需要在父shell定義環境變數的變數子shell才可以使用可以繼承環境變數。在指令碼中

在Java中呼叫引數的儲存過程

JDBC呼叫儲存過程: CallableStatement在Java裡面呼叫儲存過程,寫法那是相當的固定:package procurement;import java.sql.CallableStatement;import java.sql.Connection;impo

Java之怎麼通過java去呼叫並執行shell指令碼以及問題總結(轉)

背景 我們在開發過程中,大部分是java開發, 而在文字處理過程中,主要就是指令碼進行開發。 java開發的特點就是我們可以很早地進行TDDL, METAQ 等等地對接; 而指令碼開發的特點就是在進行批處理的時候非常方便。 前陣子我遇到這麼一個需求場景: 對抓

ADF備忘:EL表示式呼叫引數的方法(expression language invoke method with parameter)

EL表示式呼叫帶引數的方法很簡單,直接傳入呼叫值即可 例如在專案中的這種用法: jsf: <af:inputText value="#{pageFlowScope.incidentReq

【原創】python學習筆記(5)--《笨辦法學python》,指令碼引數

一 指令碼檔案 (1) 簡單的說就是一段自己寫的,可執行的程式碼,否則會報錯 (2)簡單指令碼,直接 python  xxx1.py (3)帶引數指令碼,需要 python xxx2.py argv1 argv2 argv3         根據指令碼引數的數量,

python呼叫Shell指令碼:os.system(cmd)或os.popen(cmd)的區別

 兩者的區別是: os.system(cmd)的返回值只會有0(成功),1,2  os.popen(cmd)會吧執行的cmd的輸出作為值返回。 python呼叫Shell指令碼,有兩種方法:os.system(cmd)或os.popen(cmd),前者返回值是指令碼的退出

Shell指令碼通過引數傳遞呼叫指定函式

我們在寫一些功能性指令碼的時候,往往會把操作相似或者引數類似行為接近的函式放在同一個shell指令碼中,這樣管理方便,維護簡單,也很清晰。對於這種情況,通常的辦法是,在shell指令碼中定義所有用到的函式,然後在正文程式碼中用case語句讀入輸入的命令函式引數來呼叫指定的相

python呼叫shell指令碼的兩種方法

os.system()和os.popen() 1.python呼叫Shell指令碼,有兩種方法:os.system()和os.popen(), 前者返回值是指令碼的退出狀態碼,後者的返回值是指令碼執行過程中的輸出內容。 >>>help(

linux -- shell指令碼呼叫其他指令碼,向shell指令碼傳遞引數

Shell 指令碼也可以看做是一個一個的函式,將命令進行了封裝。 看看自己的例子: outTop.sh 是最頂層的。【負責呼叫其他的shell 指令碼】out1.sh 是第2層。【被outTop.sh呼叫】outInsert是第2層。【被outTop.sh呼叫】檔案 out

python學習之--呼叫shell指令碼

python呼叫Shell指令碼,有很多種方法,下面給出了三個python中執行shell命令的方法 第一種方案:os.system os.system返回指令碼的退出狀態碼 現有一個shell指令碼

shell指令碼中實現指令碼a裡面的函式呼叫指令碼b中的函式引數-用到source關鍵字

########################################################## 這裡就以常用的拷貝壓縮為例進行實戰 ########################################################## 首

shell指令碼呼叫python指令碼的路徑問題

指令碼的相互呼叫中,只有在同一級目錄下才可以使用__file__引數去獲取路徑名,(在shell裡使用pwd也同樣),否則,使用的就是主檔案(最開始執行的指令碼程式)的所在位置,是錯誤路徑:一定要注意當期那執行主檔案是誰 而 shell指令碼相互呼叫時路徑也要注意部分命令

一個簡單RPC框架是如何煉成的(III)——實現引數的RPC呼叫

上一篇,我們制定了一個很簡單的RPC訊息 的格式,但是還遺留了兩個問題 我們並沒有實現相應的encode和decode方法,沒有基於可以跨裝置的字串傳輸,而是直接的記憶體變數傳遞。 現在的RPC request不支援帶引數的請求命令。如add(a, b), 如何在RPC訊息中描述

Linux系統下編寫shell指令碼傳入引數列印系統當前執行緒數到指定檔案

  最近在做效能測試,要檢視系統執行過程中執行緒數,很簡單輸入命令:netstat -anp |grep java |wc -l,可以查詢。但是如何在執行過程定時列印系統執行緒數且將結果輸出到指定檔案呢?也很簡單我們直接寫一個shell指令碼執行下就可以了。以

shell指令碼計算輸入引數的的平均值

方法一: #!/bin/bash [ $# -ne 1 ] && exit #判斷引數個數 [ "$1" -le 0 ] && exit #判斷引數合法性 sum=0 for (( i=1;i<=$1;i=i+1 )) do read -p "Inp