如果我尝试类似的东西
if [ a < b ]
在 bash 中,它将其解释为试图将一个文件传输到另一个文件。如果我想进行字符串比较,我知道我应该像这样转义运算符:
if [ a \< b ]
我知道我可以使用 [[ 来解决这个问题,但我的问题是,为什么这样转义会起作用?
最佳答案
本质上,[
是一个程序,当它的参数是 a
时,它会做你想做的事, <
, b
, 和 ]
. (事实上,Bash 将 [
实现为一个内置函数,但它将它实现为好像它是一个单独的程序,而不是对其进行特殊处理。这是为了与 [
字面上的系统兼容路径上的单独程序。)
所以,就像写echo a \< b
一样或 echo a '<' b
或 echo a "<" b
让你调用echo
带有参数 a
, <
, 和 b
(以便打印 a < b
),写作 [ a \< b ]
或 [ a '<' b ]
或 [ a "<" b ]
让你调用[
带有参数 a
, <
, b
, 和 ]
(从而检验a
是否小于b
)。
关于bash - 为什么转义大于或小于在 bash 字符串比较中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814199/