Answers:
test是内置的shell,(显然)测试某些给定条件。一些较旧的Shell需要特殊命令。因此,您也可以在找到程序/usr/bin/test。[也是测试某些条件的程序。该软件还需要一个右括号,您可以在找到它/usr/bin/[。[[…]]是可替换的test和[。它是针对Korn shell(ksh)开发的。但是您也可以在大于2的Bash版本和Z Shell中找到它。双括号具有一些漂亮的功能:
-a(AND)或-o(OR)。&&||=可以做更多的事情。((…))等同于let。因此基本上((expression))与相同let "expression"。但是,let可以使用多个表达式,但双括号仅允许一个表达式。$((…))(以及$[…])进行一些计算。您的shell尝试计算括号内的表达式,并用结果替换该表达式。因此echo $((1+1))导致echo 2。因此,您的贝壳会打印数字2。每次要比较两个数字时,都应使用带有破折号和两个字母(-ge,-lt等等)的选项。如果要比较字符串,则应使用=或!=。
您关于转义的问题很难回答。因为它取决于您除了从外壳程序使用的软件。所以,即grep和grep -E需要不同的转义。这也符合的情况下sed,awk他人和。因此,最好的选择是查看联机帮助页。一段时间后,您会习惯并知道何时使用转义。
if [ 2 -gt 1 ]; …是更常见的,因为据我所知,这在POSIX兼容的外壳程序脚本中更常见。