Bash中的-n是什么意思?

29

这可能是一个非常愚蠢的问题,但是...如果[!-n "$1"],就意味着如果参数不超过一个...所以我知道它是如何工作的,但是 -n 是什么意思?它是数字的缩写吗?

我一直在阅读《高级Bash编程指南》,然后他们就开始使用它了。我尝试找到它,结果发现它必须是一个“内置”的默认参数。是否有一个命令可以显示Linux中的默认参数?

这是可能是一个很蠢的问题,但是如果 [ ! -n "$1" ] 的意思是如果没有超过一个参数,则... 所以我明白它的运作方式了,但是这里的 -n 指的是什么?它是数字的缩写吗?
我一直在阅读《高级 Bash 编程指南》,他们刚开始就用到了这个。我试图找到它,但只能得出它必须是一个“内置”的默认参数。是否有一个命令可以显示 Linux 中的默认参数?
2个回答

37
-n 参数对于 test 命令(也称为 [)表示 "非空"。你发布的示例意味着 "如果 $1 不是非空的,则..."。这是表达 [ -z "$1" ];(即 $1 为空)的一种迂回方式。
你可以通过 help test 学习更多相关信息。 $1 以及其他参数($2$3...)都是位置参数。它们是传递给你所在的脚本或函数的参数。例如,以 ./foo bar baz 的方式运行名为 foo 的脚本将导致 $1 == bar$2 == baz

3
可以在Bash手册中找到。尽管如此,“/test”确实是一个很好的开始。 - Aif

11

-n 是 Bash 中用于评估表达式的一种字符串运算符。它测试其旁边的 字符串,如果该 字符串 不为空,则将其评估为“True”。

位置参数是一系列特殊变量($0$1$9),它们包含程序的命令行参数内容。 $0 包含程序的名称,其他参数则为我们传递的参数。

在这里,如果传递给程序的第二个 位置参数$1)是空的,或者换句话说,如果除$0之外未传递程序的任何参数,则 [ ! -n "$1" ] 评估为“True”。


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