Bashの2つの文字列を比較する


13

変数rmdirを使用してパスワードで確認した後、ディレクトリを削除するスクリプトを作成したいと思いreadます。

これまでのところ私はこれを持っています:

#!/bin/bash -x
echo "Password:"
read -t 30 S1
    S2='55555'
if [ $S1=$S2 ]; then
    rmdir /home/william/test
else
    echo "fail"
sleep 10
fi

そのため、-xデバッグを試みる必要がありますが、スクリプトがエコーに失敗するたびに(パスワードを間違えた場合)、必要なディレクトリが削除されません。

誰かが私が使用できる修正可能なスクリプトを持っている場合、または現在のスクリプトの問題を指摘できる場合

回答:


17

これら2つの文字列(S1およびS2)を使用して比較する正しい方法ifは次のとおりです。

if [ "$S1" = "$S2" ]

この場合、使用スペースにケチをしないでください。

参照:http : //tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html


TLDPは多くの矛盾とエラーがあるため、本物のサイトではありません。参照として使用しないことをお勧めします。
コードフォレスター

6

bashスクリプトでは、2つの変数を以下のメソッドと比較する必要があります。

if [ "var1" != "var2" ]; then
  Do something
fi;

スペースは重要です


4

GNUを使用することもできますtest。例:

test s1 = s2 && echo Equal || echo Not equal

あなたの文脈では、次のとおりです。

test "$S1" = "$S2" && rmdir -v /home/william/test
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.