前言:

在给nagios开发监控插件的时候,不论是用哪种语言写插件,最好能从命令行获得参数(警告值和报警值:-w warning_value -c critical_value),而不是在插件里把这两个值写进去,通常情况下会随着环境改变而更改警告和报警值。

python: 通过sys模块实现

官方文档:

sys.argv

The 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命令列表,第一个元素argv[0]是脚本名,argv[1]表示第1个参数,argv[2]表示第2个参数,以此类推。

举个简单的例子:

#!/usr/bin/env python

importsysdefPrintArgv(): # 如果需要list中的index,可以用内置的enumerate函数实现;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.py

all para(s):['test.py']script name: test.py

>python test.py 'name'913all para(s):['test.py', "'name'", '913']script name: test.py

para1: 'name'

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

script name: test.py

para1: 'name'

para2 : 913para3 : [1,2]

可以看出,参数默认为字符串类型,同input一样,需要转换为int类型的传入参数时需要注意。

shell实现:$变量

shell脚本中可以通过变量的方式调用命令传入的参数,$0为脚本名,第一个参数$1,第二个参数$2,以此类推。特别的,$#表示参数个数,$@表示所有参数。

简单例子:

# --para.sh--

#!/bin/bashecho "all para(s):"$@echo "script name:" $0

for index in `seq 1$#`do

echo "para ${index}:" $1

shift

done

[root@oam shell]# ./para.shall para(s):

script name: para.sh[root@oam shell]# ./para.sh hello lei 2014all para(s): hello lei2014script name: para.shpara1: hello

para2: lei

para3: 2014

C/C++实现

C和C++都允许从命令行给main函数传入参数:int main(int argc, char*argv[]),argc表示有几个参数将传给main函数,参数以字符串数组argv[]的形式传递。同样argv[0]表示二进制文件名,argv[1]表示第一个参数,argv[2]表示第二个参数,依此类推。

简单的例子:

#include

using namespacestd;int main(int argc, char *argv[])

{

cout<< "file name:" << argv[0] <

cout<< "para num:" << argc <

{

cout<< "para" << i << ":"

<< argv[i] <

}return 0;

}

[root@oam c_bat]# ./a.outfile name: ./a.out

para num:1[root@oam c_bat]# ./a.out hello night 913

file name: ./a.out

para num:4para1: hello

para2: night

para3: 913

shell python -c_python, shell, C/C++ 从命令行获得参数相关推荐

  1. Shell Scipt 命令行带参数,输出log

    Shell Scipt 命令行带参数,输出log 命令行带参数,以及字符串参数放到ssh命令里可以这么放: #!/bin/bash        这行保证运行bash可以这样: ./data.sh i ...

  2. python命令行输入参数_Python命令行参数处理

    sys模块 sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息,其中 sys.argv 可以获取命令行参数 在Python交互式解释器中可以先导入sys模块 import ...

  3. Python自学笔记(二)命令行参数使用

    前言   当我们在写完多个pyhon脚本时,怎么去使用这些脚本也成为一个问题.我们写的这些脚本对于使用者来说是封闭的存在,为了让我们的脚本文件更加灵活,我们可以通过命令行参数给脚本传入相应的数据并运行 ...

  4. python从命令行获取参数_python从命令行获取参数操作

    python从命令行获取参数 一: 简单用法 从命令行获取参数两种方式: 1.通过sys.argv参数获取:代码如下: # -*- coding: utf-8 -*- import sys #获取输入 ...

  5. python argparse nargs_Python | 使用argparse解析命令行参数

    今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse. 命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码 ...

  6. python获取命令行参数_【整理】Python中如何获得并处理命令行参数

    运行Python脚本时,时常需要从命令行中传递一些参数到Python程序中,但是如何获得相应的传递进来的参数,以及如何解析这些参数,是很多人,包括最开始的我,所遇到的问题. 下面,就对此总结一下: 先 ...

  7. Python高阶——argparse(命令行与参数解析)

    文章目录 1.前言 2.创建脚本 3.导入解析模块 4.初始化.添加参数.解析参数 4.运行脚本 5.通过脚本实现计算功能 1.前言 本节,将讲解如何通过命令行传递参数.具体以代码形式讲解,保您一看就 ...

  8. Python 打造基于百度翻译的命令行翻译工具

    Python 打造基于百度翻译的命令行翻译工具 由于英文水平一般,所以还是非常依赖翻译工具的.fanyi.baidu.com 都成了我浏览器必开的网页之一了.昨天项目上线,等待过程中,无聊写了一个基于 ...

  9. Python click包详解,简单易用的命令行传入参数

    背景: 运行py脚本需要命令行传入参数 安装: pip install click 使用方法: import clickclass DefaultHelp(click.Command):def __i ...

最新文章

  1. 我把SpringBoot项目从18.18M瘦身到0.18M,部署起来真省事!
  2. 北大博士干了半年外卖骑手,写出 AI 伦理论文登上顶刊,“系统知道一切”
  3. window.opener方法的使用 js跨域
  4. asp.net中使用CKEditor
  5. 学习CSS了解单位em和px的区别
  6. 一文聊透binlog、redo log、undo log
  7. 当我们谈高性能时,我们谈些什么?(送书活动)
  8. 深度学习第三次课-梯度下降与反向传播
  9. 长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)
  10. 微信小程序视图层WXML_小程序事件
  11. 抖音上热门规则 视频md5码查看器
  12. 已解决:有道云笔记web端和PC端频繁崩溃的解决方法
  13. nw.js html5,nw.js 如何使用?
  14. miniGui交叉编译
  15. Primeng12+ 使用 full-calendar
  16. 12312312312313
  17. SimpleDateFormat.parse()方法中的时区设置缺陷
  18. 【转】可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)
  19. 总结一周:变量,数据类型,循环,函数
  20. 游戏3D建模要做到什么程度才能月薪过万

热门文章

  1. sendmail(一)
  2. jQuery,Ashx发送站内信
  3. BZOJ-3211-花神游历各国(线段树)
  4. EMC升级Celerra 支持闪存及重复数据删除
  5. JS获取当前对象大小以及屏幕分辨率等...
  6. Java从零开始学四十五(Socket编程基础)
  7. SVN错误---Authorization failed
  8. Postgresql死锁的处理
  9. BoneCP 学习笔记
  10. alpine linux 执行文件崩溃 报错 找不到/lib/x86_64-linux-gnu/libc.so 解决方法