在命令行工具中打印编号的参数

是否有一个显示命令行参数的打包程序? 我经常发现让用户运行这种类型的程序来帮助他们理解shell命令的作用,或者获得更清晰,更模糊的反馈(例如,当我看不到他们的屏幕并且我们在线通过粘贴进行通信时)会很有帮助网站)。

我在Python中编写了下面的脚本,但是我觉得更容易告诉人们他们可以获取的Ubuntu包,而不是解释如何写入文件, chmod +x ,并更改他们的系统(例如,他们可能在PATH中没有~/bin设置,…)。

我很高兴看到命令行sed/awk/perl/etc. 脚本也可以执行此function,即使它很难看。 (“如果”……在一行中这样做很难看。)

任何解决方案都需要与此脚本有一些类似的结果; 这是英文:用数字打印每个参数(逃避有问题的字符只是一个奖励)。

 #!/usr/bin/env python2.6 import sys if len(sys.argv) == 1: print "No args!" else: args = enumerate(sys.argv) args.next() # skip program name for i, v in args: r = repr(v) if v.strip() != v or v != r[1:-1]: v = r + "\t(repr)" print "%3d: %s" % (i, v) 

我的解决方案(你已经知道;)作为一个函数(不需要处理PATH)成为单行:

 showargs() { i=1; for f; do printf "arg%d: <%s>\n" $i "$f"; ((i++)); done; } 

这在Bash中特别容易和有用。 IBM的这本指南介绍了使用$ @,$#,$ 1,$ 2等等,并且有一个很好的testargs.sh脚本(参见清单7和8),它可以像你一样寻找:它向用户展示了什么他们输入的参数和选项。