shell - 为什么在 [ x"$VAR"= x"VALUE"] 中使用 'x'?

标签 shell unix

我可以在 unix shell 脚本中看到以下使用的构造

[ x"$VAR" = x"VALUE" ] 

代替
[ "$VAR" = "VALUE" ] 

为什么?

最佳答案

因为如果变量之一为空,shell 并不总是完全表现良好。

考虑是否 $VAR为空/空和 $VALUE是“foo”,你的两个结构扩展为:

[ x = xfoo ]


[ = foo ]

后者会因为是非法构造而在某些 shell 中导致错误,而前者在任何情况下都是有效的。这在最新版本的 bash(甚至可能是旧版本的 bash)中不是问题,但这就是它的历史来源-除了偶尔会遇到遇到您情况的人感到困惑之外,几乎没有理由不这样做是为了与范围更广的 shell 。

关于shell - 为什么在 [ x"$VAR"= x"VALUE"] 中使用 'x'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093472/

相关文章:

spring - 如何运行独立/交互式 Spring Boot CRaSH Shell 应用程序?

linux - 如何在 Linux 后台终止作业调度程序?

bash - 为什么在可执行文件或脚本名称之前需要 ./(点斜杠) 才能在 bash 中运行它?

linux - 每次显示时从两种模式之间获取文本

c++ - C中的快速生产者/慢速消费者

c - 传输端点未连接 recv 套接字

java - 每秒从 Java 程序中的 Linux 实用程序接收值

c - 在 C 中执行时显示完成百分比

c++ - 如何处理 Unix 管道

linux - 双引号 bash 脚本 linux