Сравнение двух строк в Bash

11

Я хотел бы создать скрипт, который удаляет каталог с 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 , чтобы попытаться отладить его, но каждый раз, когда скрипт либо не выполняет эхо (если я ошибочно ввел пароль), либо он не удалит нужную директорию.

Если у кого-то есть модифицируемый скрипт, который я мог бы использовать, или если бы вы могли указать на проблемы с текущим скриптом, это было бы здорово.

    
задан Desert_foxhole 30.09.2013 в 07:42
источник

3 ответа

16

Правильный способ сравнения этих двух строк ( S1 и S2 ) с использованием if :

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

Не будьте скупыми в пробелах в этом случае.

Смотрите: Ссылка

    
ответ дан Radu Rădeanu 30.09.2013 в 08:11
6

В сценариях bash вам нужно сравнить две переменные с методом ниже.

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

Пространства важны

    
ответ дан Mansur Ali 16.02.2015 в 16:02
2

Вы также можете использовать GNU test , например:

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

В вашем контексте это:

test "$S1" = "$S2" && rmdir -v /home/william/test
    
ответ дан kenorb 13.10.2015 в 00:57