在Shell脚本中,usage()是什么意思?

16

我是Shell脚本的新手,正在独立学习。我看到很多脚本都有一个usage()函数,例如:

 usage()  
 {  
 echo "Usage: $0 filename"  
 exit 1  
 } 

哪些函数应该被称为usage?是否与“使用说明”有关系?我找不到任何关于这个的基本定义...


要获取更详细的描述,可以在usage()中使用heredoc。参见:Here Documents - The Linux Documentation Project。这通常是在usage()给出脚本详细信息以及每个选项的列表和描述时所使用的。它可以防止连续使用大量的echoprintf语句... - David C. Rankin
2个回答

24

这只是一种惯例。当命令行中提供的值有问题时,人们通常使用一个叫做usage()的函数来告诉你问题所在/期望的值。例如:

#!/bin/sh
if [ $# -ne 1 ] ; then
    usage
else
    filename=$1
fi
...

2
另外的惯例是:当请求帮助(-h,--help)时将使用说明打印到标准输出(&1);否则将使用说明打印到标准错误输出(&2)。 - rubicks
1
在给定的示例中,"();" 似乎不符合 POSIX。 - Thomas Dickey
没错,那里有一个小的C语言错误。已经修正了。 - John Hascall

6

当您检查程序发送的参数时,有时需要通知用户它们未能成功执行命令。

例如,如果您期望使用myprogram filename调用您的程序,则如果没有参数或多于1个参数,您将调用usage

与其在代码中的几个位置都使用usage的相同消息内容,最好的做法是仅使用一个函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接