我有这个测试命令:
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