是否有显示命令行参数的打包程序?我经常发现让用户运行这种类型的程序很有帮助,既可以帮助他们了解 shell 命令的作用,也可以获得更清晰、更明确的反馈(例如,当我看不到他们的屏幕并且我们正在使用粘贴网站进行在线交流时)。
我已经用 Python 编写了下面的脚本,它可以运行,但我发现告诉人们他们可以获取一个 Ubuntu 包比解释如何写入文件、chmod +x
如何更改他们的系统(例如,也许他们没有~/bin
在 PATH 中设置,...)更容易。
我很高兴看到一个命令行sed/awk/perl/etc.
脚本也能实现这个功能,即使它很丑陋。(“如果”……在一行中执行此操作将要很丑。
任何解决方案都需要具有与该脚本有些类似的结果;用英语来说:用数字打印每个参数(转义有问题的字符只是一个奖励)。
#!/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)
答案1
我的解决方案(您已经知道;)作为一个函数(不需要处理 PATH)成为一行:
showargs() { i=1; for f; do printf "arg%d: <%s>\n" $i "$f"; ((i++)); done; }
答案2
这在 Bash 中特别容易且有用。 IBM 的本指南演示了 $@、$#、$1、$2 等的使用方法,并且有一个很好的 testargs.sh 脚本(参见清单 7 和 8),它可以完成您正在寻找的事情:它向用户显示他们输入的参数和选项。