次のテストコマンドがあります。
test "ssh://[email protected]/teros/moodwire_demo" == ssh*; echo $?
出るときなぜ1?最初の文字列が2番目の文字列で始まるかどうかを確認したいと思います。
答え1
test
のコマンドはbash
これを実行できません。文字列の場合、式、不等式、およびアルファベット順のテストのみをサポートします(参考help test
文献を参照bash
)。
しかし、あなたは使用することができます
[[ "ssh://[email protected]/teros/moodwire_demo" == ssh* ]]
echo "$?"
[[ ... ]]
この形式の文字列の一致はでのみ実行されますbash
。
使用しないでください[[ ... ]]
:
expr "ssh://[email protected]/teros/moodwire_demo" : '^ssh' >/dev/null
echo "$?"
これはexpr
ユーティリティを使用して一致します(デフォルト)。 正規表現 ^ssh
反対の文字列です。expr
組み込みユーティリティではないため、==
内部で使用するよりも少し遅くなります。[[ ... ]]
bash