用于字符串和数字比较的bash语法

时间:2015-08-05 16:18:35

标签: bash

为什么bash使用<PATIENTS> <PATIENT> <APPOINTMENTS> <APPOINTMENT> <UserInitials>123</UserInitials> <Date>Some Date</Date> <ApptTime>14:30</ApptTime> <Duration>00:15</Duration> <AppointmentStatus>Complete</AppointmentStatus> <Notes>Some note</Notes> <TreatmentType>Some Appoinment type</TreatmentType> </APPOINTMENT> </APPOINTMENTS> </PATIENT> </PATIENTS>  数字比较等,和==,!=等进行字符串比较?

Bash语法有其怪癖,这使得编写和记忆变得困难,但对于一个简单的用例来说,这似乎完全不直观。

来源:[bash syntax] [1] http://www.ibm.com/developerworks/library/l-bash-test/index.html

1 个答案:

答案 0 :(得分:1)

bash只有一种类型:字符串。更丰富的类型语言可以重载(例如)>运算符以基于参数的类型执行字符串比较或数字比较。缺少字符串类型以外的任何内容,bash必须为不同的操作分别设置运算符。比较

[[ 9 > 10 ]] # exit status 0; 9 is lexicographically greater than 10
[[ 9 -gt 10 ]] # exit status 1; 9 is not numerically greater than 10

但是,如果在算术表达式中使用数字,则可以使用常规运算符,其中bash假设所有值都是数字或带有数值的变量。

(( 9 > 10 ))  # exit status 1, 9 is not numerically greater than 10
(( 9 > foo )) # same as [[ 9 -gt $foo ]]