web-dev-qa-db-ja.com

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

変数を設定するために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がありますが、スクリプトがエコーに失敗するたびに(パスワードを間違えた場合)、必要なディレクトリが削除されません。

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

13
Desert_foxhole

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

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

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

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

17
Radu Rădeanu

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

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

スペースは重要です

6
Mansur Ali

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

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

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

test "$S1" = "$S2" && rmdir -v /home/william/test
4
kenorb