先看两个例子:
basename 和 printf 都是常用的命令,怎么还能出问题?
对于shell来讲,参数字符串可以使用引号引起来,也可以不引起来;如果单个参数中含有空格,一般会引起来; 但是,不管是否引起来,如果位于option的位置,就会尝试当做option解析,一般的option都以dash(-) 开头; 有些程序在当做option解析失败时,就会当做别的参数处理,但是有些程序就提示“无效的option”(如: 上面的basename、printf)
有些时候,我们不在意参数前面是否有一个多余的空格,则可以在dash前面添加一个空格来解决,如:
但是,有时候我们真的不想添加这个空格,而且,这一定不是一个不可逾越的“空格”,那么,正确的姿势是什么呢?
当我们不希望将参数识别为option的时候,就在该参数前面添加两个连续的中划线(dubble dash),以告诉命令option到此为止,后面的不要作为option处理了,如: