免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
python, shell, C/C++ 從命令行獲得參數(shù)

 

前言:

在給nagios開(kāi)發(fā)監(jiān)控插件的時(shí)候,不論是用哪種語(yǔ)言寫(xiě)插件,最好能從命令行獲得參數(shù)(警告值和報(bào)警值:-w warning_value -c critical_value),而不是在插件里把這兩個(gè)值寫(xiě)進(jìn)去,通常情況下會(huì)隨著環(huán)境改變而更改警告和報(bào)警值。

python: 通過(guò)sys模塊實(shí)現(xiàn)

官方文檔:sys.argvThe list of command line arguments passed to a Python script. argv[0] is the script name (it is operating system dependent whether this is a full pathname or not). If the command was executed using the -c command line option to the interpreter, argv[0] is set to the string '-c'. If no script name was passed to the Python interpreter, argv[0] is the empty string.
sys.argv命令列表,第一個(gè)元素argv[0]是腳本名,argv[1]表示第1個(gè)參數(shù),argv[2]表示第2個(gè)參數(shù),以此類推。

舉個(gè)簡(jiǎn)單的例子:

#!/usr/bin/env pythonimport sysdef PrintArgv(): # 如果需要list中的index,可以用內(nèi)置的enumerate函數(shù)實(shí)現(xiàn);    print('all para(s):', sys.argv)    print('script name:', sys.argv[0])    if sys.argv[1:]:        index = 1        for para in sys.argv[1:]:            print('para', index, ':', para)            index += 1

import sys
def PrintArgv():
    print('all para(s):', sys.argv)
    print('script name:', sys.argv[0])
    argv_list = list(enumerate(sys.argv))
    if sys.argv[1:]:
        for para in argv_list[1:]:
        print('para', para[0], ':', para[1])

PrintArgv()

>python test.pyall para(s): ['test.py']script name: test.py>python test.py 'name' 913all para(s): ['test.py', "'name'", '913']script name: test.pypara 1 : 'name'para 2 : 913>python test.py 'name' 913 [1,2]all para(s): ['test.py', "'name'", '913', '[1,2]']script name: test.pypara 1 : 'name'para 2 : 913para 3 : [1,2]

可以看出,參數(shù)默認(rèn)為字符串類型,同input一樣,需要轉(zhuǎn)換為int類型的傳入?yún)?shù)時(shí)需要注意。

shell實(shí)現(xiàn):$變量

shell腳本中可以通過(guò)變量的方式調(diào)用命令傳入的參數(shù),$0為腳本名,第一個(gè)參數(shù)$1,第二個(gè)參數(shù)$2,以此類推。特別的,$#表示參數(shù)個(gè)數(shù),$@表示所有參數(shù)。

簡(jiǎn)單例子:

# --para.sh--
#!/bin/bashecho "all para(s): " $@echo "script name: " $0for index in `seq 1 $#`do echo "para ${index}: " $1 shiftdone
[root@oam shell]# ./para.shall para(s):script name:  para.sh[root@oam shell]# ./para.sh hello lei 2014all para(s):  hello lei 2014script name:  para.shpara 1:  hellopara 2:  leipara 3:  2014

C/C++實(shí)現(xiàn)

C和C++都允許從命令行給main函數(shù)傳入?yún)?shù):int main(int argc, char*argv[]),argc表示有幾個(gè)參數(shù)將傳給main函數(shù),參數(shù)以字符串?dāng)?shù)組argv[]的形式傳遞。同樣argv[0]表示二進(jìn)制文件名,argv[1]表示第一個(gè)參數(shù),argv[2]表示第二個(gè)參數(shù),依此類推。

簡(jiǎn)單的例子:

#include<iostream>using namespace std;int main(int argc, char *argv[]){   cout << "file name: " << argv[0] << endl;   cout << "para num: " << argc << endl;   for (int i=1; i<argc; i++)   {      cout << "para " << i << ": "           << argv[i] << endl;   }   return 0;}
[root@oam c_bat]# ./a.outfile name: ./a.outpara num: 1[root@oam c_bat]# ./a.out hello night 913file name: ./a.outpara num: 4para 1: hellopara 2: nightpara 3: 913 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
實(shí)用工具:在工作中我是如何執(zhí)行python文件的
python sys.argv[]用法
Python 使用命令行參數(shù)
獲取命令行參數(shù)
python sys模塊的常見(jiàn)用法匯總
Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服