参数前面带hyphen如何处理

在Linux中,一个横线-表示一个选项的开始,如果这个选项是错误的,就会报错并停止执行。

例子

basename

我在.bashrc里source了一个脚本,可以把$0basename存放到一个变量中。我在字符界面下登录时,提示

basename: invalid option — b
Try `basename –help' for more information

后来经检查,$0-bash,前面有个-,因此不行。

(此段可略过)basename为什么要解析选项呢?它使用时没有一个可选选项。 答案:为了解析’–help’和’–version’。

grep

为了在一个帮助里找到一行,比如:

tar --help|grep '-j'

结果

grep: unknown option — j
Usage: grep [OPTION]… PATTERN [FILE]…
Try `grep –help' for more information.

它把’-j’当成自己的选项了。

应该这样

basename — "$0"
grep — '-j'

原因

--是一个特殊的选项,它后面的一律不解释为选项。

因此,当要处理的参数(可能)以一个短横线开始时,要在它前面放置