为什么测试命令startswith失败(以1退出)?

为什么测试命令startswith失败(以1退出)?

我有这个测试命令:

test "ssh://[email protected]/teros/moodwire_demo" == ssh*; echo $?

为什么退出时是1?我想看看第一个字符串是否以第二个字符串开头。

答案1

test中的命令无法bash执行此操作。对于字符串,它仅支持相等、不相等和字典顺序的测试(参见help test参考资料bash)。

但是您可以使用

[[ "ssh://[email protected]/teros/moodwire_demo" == ssh* ]]
echo "$?"

[[ ... ]]这种形式的字符串匹配仅在in中完成bash

不使用[[ ... ]]

expr "ssh://[email protected]/teros/moodwire_demo" : '^ssh' >/dev/null
echo "$?"

这使用expr实用程序来匹配(基本) 正则表达式 ^ssh反对弦。由于expr不是内置实用程序,因此这会比在中使用==inside慢一些。[[ ... ]]bash

相关内容