6

文字列の最後の文字が/

x="test.com/"

if [[ $x =~ //$/ ]] ; then
        x=$x"extention"
else
        x=$x"/extention"
fi

現時点では、常に false が発生します。

4

4 に答える 4

12

たとえば、次のようにします。

$ x="test.com/"
$ [[ "$x" == */ ]] && echo "yes"
yes

$ x="test.com"
$ [[ "$x" == */ ]] && echo "yes"
$ 

$ x="test.c/om"
$ [[ "$x" == */ ]] && echo "yes"
$ 

$ x="test.c/om/"
$ [[ "$x" == */ ]] && echo "yes"
yes

$ x="test.c//om/"
$ [[ "$x" == */ ]] && echo "yes"
yes
于 2013-10-09T12:26:50.070 に答える
3

${var:index}とを使用して Bash で文字列のインデックスを作成し${#var}、文字列の長さを取得できます。負のインデックスは、文字列の末尾から先頭に移動することを意味するため-1、最後の文字のインデックスになります。

if [[ "${x:${#x}-1}" == "/" ]]; then
    # last character of x is /
fi
于 2013-10-09T12:38:17.107 に答える
3

あなたの状態は少し間違っていました。を使用する場合=~、rhs はパターンと見なされるため、patternand notと言うでしょう/pattern/

と言えば、期待通りの結果が得られたでしょう

if [[ $x =~ /$ ]] ; then

それ以外の

if [[ $x =~ //$/ ]] ; then
于 2013-10-09T12:32:58.233 に答える