有人知道为什么下一个表达式在LINUX中正确执行但在UNIX中没有执行?
SOME_DATE=201804132359
if [ `expr length $SOME_DATE` -eq 12 ]; then
在那些无效的情况下,我们会收到此错误:
[: -eq: unary operator expected
答案 0 :(得分:1)
这是因为linux正在移植 GNU expr ,而unix正在移植 POSIX expr ,并且它们有不同的概要。
expr length $SOME_DATE
无法使用unix,它会产生错误,这就是您的代码会中断的原因。
您可以在unix上更改代码。
SOME_DATE=201804132359
if [ `expr $SOME_DATE : ".*"` -eq 12 ]; then
但如果您只是想要结果,可能[ "${#SOME_DATE}" -eq 12 ]
可能是更好的解决方案。