|
1
77
如果你用的是外壳
简单的
替代和
其中第一个参数将生成自第一个参数到
您的案例解释如下:
它可能
似乎
有点多余,因为它有引号和“x”,但它也会处理一个变量,其中包含空格,而不会给出
二
的参数
另一个原因(空变量除外)与选项处理有关。如果你写:
和
记住这取决于外壳。一些贝壳(
|
|
2
19
其他人没有提到的另一个原因与期权处理有关。如果你写:
$1的值为“-n”,test命令的语法不明确;不清楚您在测试什么。前面的“X”防止前面的破折号引起故障。
你必须看看真正古老的贝壳才能找到一个测试命令不支持的地方
正如其他一些人指出的那样,不要在值周围使用双引号是危险的。事实上,如果文件名可能包含空格(MacOS X和Windows在某种程度上都鼓励这样做,而且Unix一直支持它,尽管类似于
|
|
|
3
10
我知道本公约有两个原因: http://tldp.org/LDP/abs/html/comparison-ops.html
其次,在bash之外的其他shell中,尤其是较旧的shell中,不存在用于测试空变量的“-z”这样的测试条件,因此,尽管这样做:
在bash中可以很好地工作,如果您的目标是跨各种Unix环境的可移植性,在这些环境中,您不能确定默认shell是否为bash,以及它是否支持-z测试条件,那么如果[“x$some_var”=“x”]始终具有预期的效果,那么使用表单更安全。从本质上讲,这是一个寻找空变量的旧shell脚本技巧,尽管有更干净的方法可用,但它仍然用于向后兼容性。 |
|
|
4
4
我建议改为:
因为它消除了丑陋
|
|
|
5
2
我相信是因为
以及
和
然而,这通常是可行的
但是当它在其他地方抱怨输出时,我想很难说出它在抱怨什么,所以
也可以,但更容易调试。 |
|
|
6
1
在DOS中,当shell变量可能未定义时,我会这样做。 |
|
|
7
1
如果不执行“x$shell_var”操作,那么如果未定义$shell_var,则会得到一个关于“=”的错误,它不是一元运算符或类似的运算符。 |
|
|
user1202136 · HAVE_*宏的目的是什么? 8 年前 |
|
|
Danny Lo · 嵌套文件夹的自动生成-递归是必须的吗? 9 年前 |
|
|
rich p · 链接器从哪里获得库名称? 10 年前 |
|
|
natenho · buildroot将错误的PREFIX附加到自定义包生成 10 年前 |
|
|
Razican · 如何在程序的自动检查中设置常量? 10 年前 |
|
|
Ender · 如何使用自动工具构建特定组件? 10 年前 |