13

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

我一直在阅读 The Advanced Bash 编程指南,他们才开始使用它。我试图找到它并想​​出它必须是一个“内置”默认参数。有没有在 Linux 中显示默认参数的命令?

4

2 回答 2

21

(aka )的-n参数表示“不为空”。您发布的示例意味着“如果不是非空的。这是一种迂回的说法(是空的)。test[$1[ -z "$1" ];$1

您可以通过 了解更多信息help test

$1和其他 ( $2, $3..) 是位置参数。它们是作为参数传递给您所在的脚本或函数的内容。例如,运行名为fooas的脚本./foo bar baz会导致$1 == bar,$2 == baz

于 2012-05-07T01:05:32.447 回答
2

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

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

在这里,如果传递给程序的第二个位置参数 ( ) 为,或者(换句话说)如果没有传递给程序的参数不是,[ ! -n "$1" ]则计算结果为“True” 。$1$0

于 2017-12-28T13:22:50.090 回答