![]() |
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,则会得到一个关于“=”的错误,它不是一元运算符或类似的运算符。 |
![]() |
Plankt0n · Shell,执行一个需要逐一遍历多个值的命令 6 月前 |
![]() |
Fin · 如何使用bash从表中提取数据 6 月前 |
![]() |
aenagy · Bash声明不喜欢带空格的值 6 月前 |
![]() |
PkDrew · AND运算符“&”在“&tee”中的作用是什么? 6 月前 |
![]() |
elbarna · 正则表达式仅排除小写字符串,但保存包含大写的字符串 6 月前 |
![]() |
Harry · 使用“$!”获取后台作业的pid 6 月前 |
![]() |
nmr · 使用来自另一个shell脚本的if语句的返回码函数 6 月前 |
![]() |
minseong · Git sed忽略二进制文件 10 月前 |
![]() |
Jesper.Lindberg · 检查参数是否包含null 10 月前 |