嗨,我似乎在任何地方都找不到这个。这个正斜杠是什么>bash中if语句中的意思?
例如:
if [ "$count" > 0 ]; then
echo hello
else
echo goodbye
fi
字符<
和>
(以及其他字符(在shell脚本中是特殊的:它们执行输入/输出重定向。因此,当你试图在这样的测试表达式中使用它们时;正常意义";的";小于";以及";大于";,你需要逃离它们,防止它们受到外壳的特殊处理。
这类似于你可能写的方式
cat file name
在文件名或中添加空格
cat it's
对名称中包含单引号字符的文件进行cat操作。(也就是说,通常情况下,空格字符是"特殊的",因为它分隔参数,而单引号字符是特殊的,因为它引用了一些东西,所以为了让这些字符真正用作文件名的一部分,你必须引用它们,在这种情况下,使用来关闭它们的特殊含义。(
在Unix/Linux shell中,引用最终会变得复杂,因为通常有三个不同的引用字符:"
、'
和。它们的工作方式都不一样,而且规则(虽然它们大多有意义(足够复杂,我不打算在这里重复。
另一种写这篇文章的方法,避免丑陋的引用,是
if [ "$count" -gt 0 ]
事实证明,出于另一个原因,这更可取。如果您使用-gt
,它将根据$count
和0
的数值进行比较,这大概就是您想要的。另一方面,如果使用>
(即>
(,它将执行字符串比较。在这种情况下,您可能会得到相同的结果,但一般来说,当您打算进行数字比较时,进行字符串比较可能会产生疯狂的结果。参见Charles Duffy的评论以获取示例。
- 此
>
表示大于ASCII字母表中的字符串 - BASH对于反斜杠符号
具有不同的含义
- 在您的示例中,
>
是一个符号,而不是像+
>
这样的两个符号 - 对于使用
>
的数字,但对于算术运算,也要考虑[
]
,您将使用((
))
- bash中的构造函数使用这个符号
[[
]]
,它用于与双括号内的这些符号进行比较&&, ||, <, and >
- 如果将单括号
[
]
与上述符号一起使用,则BASH脚本中会出现错误,需要使用双括号
BACKSLASH的其他含义
- 如前所述,在bash中,您使用正斜杠
/
作为PATH/home/user/Desktop/file1.txt
,但如果您的文件名有空格,则需要ESCAPE空格,并使用反斜杠执行此操作,例如
带空格的文件名.txt
/home/alex/Desktop/file name with spaces.txt
带有符号的文件名->[堆栈溢出]fileName.txt
/home/alex/Desktop/[Stackoverflow]fileName.txt
你需要像这样逃离每个支架[
]
[
]
资源
Bash Constructors|Bash运算符|Ascii表格